当前位置: 首页 > news >正文

C++ .h文件类的调用

demo1只有类的情况下调用

下面写一个util.h 文件里面

// 定义宏防止编译器重复编译
#ifndef TEST_H
#define TEST_H
class Test{
public:void sum(int a, int b);int num(int a, int b);bool number();};
#endif // TEST_H

调用的时候首先要引入这个头文件 #include "util.h"

cpp 里面实现

#include <iostream>
#include <string>
#include "util.h"
using namespace std;// 实现Test类的sum成员函数
void Test::sum(int a,int b){cout << "The sum of " << a << " and " << b << " is: " << a + b << std::endl;
}
// 实现Test类的num成员函数
int Test::num(int a, int b) {return a * b;
}
// 实现Test类的number成员函数
bool Test::number() {return true;
}int main() {int a =3;int b =6;Test test;test.sum(a,b);int result = test.num(a,b);cout<< "num result" << result <<endl;bool isNumber = test.number();cout<< "number result" << isNumber <<endl;return 0;
}

demo2 有namespace的情况下调用

util.h 文件

// 定义宏防止编译器重复编译
#ifndef TEST_H
#define TEST_H
namespace common::comm::com {
class Test{
public:void sum(int a, int b);int num(int a, int b);bool number();};
}
#endif  

cpp 里面实现,这里不使用using namespace

#include <iostream>
#include <string>
#include "util.h"
using namespace std;// 实现Test类的sum成员函数
void common::comm::com::Test::sum(int a,int b){cout << "The sum of " << a << " and " << b << " is: " << a + b << std::endl;
}
// 实现Test类的num成员函数
int common::comm::com::Test::num(int a, int b) {return a * b;
}
// 实现Test类的number成员函数
bool common::comm::com::Test::number() {return true;
}int main() {int a =3;int b =6;common::comm::com::Test test;test.sum(a,b);int result = test.num(a,b);cout<< "num result" << result <<endl;bool isNumber = test.number();cout<< "number result" << isNumber <<endl;return 0;
}

使用using namespace

namespace common::comm::com {
// 实现Test类的sum成员函数
void Test::sum(int a,int b){cout << "The sum of " << a << " and " << b << " is: " << a + b << std::endl;
}
// 实现Test类的num成员函数
int Test::num(int a, int b) {return a * b;
}
// 实现Test类的number成员函数
bool Test::number() {return true;
}
}
int main() {int a =3;int b =6;using namespace common::comm::com;Test test;test.sum(a,b);int result = test.num(a,b);cout<< "num result" << result <<endl;bool isNumber = test.number();cout<< "number result" << isNumber <<endl;return 0;
}

实际用不用,根据个人习惯即可,不使用using namespace在每次调用时都写出完整的命名空间路径

把util.h 文件修改一层一层的

// 定义宏防止编译器重复编译
#ifndef TEST_H
#define TEST_H
namespace common{namespace comm{namespace com{class Test{public:void sum(int a, int b);int num(int a, int b);bool number();};}}
}
#endif  

实现里面的方法效果也是一样的

#include <iostream>
#include <string>
#include "util.h"
using namespace std;namespace common::comm::com {
// 实现Test类的sum成员函数
void Test::sum(int a,int b){cout << "The sum of " << a << " and " << b << " is: " << a + b << std::endl;
}
// 实现Test类的num成员函数
int Test::num(int a, int b) {return a * b;
}
// 实现Test类的number成员函数
bool Test::number() {return true;
}
}
int main() {int a =3;int b =6;using namespace common::comm::com;Test test;test.sum(a,b);int result = test.num(a,b);cout<< "num result" << result <<endl;bool isNumber = test.number();cout<< "number result" << isNumber <<endl;return 0;
}

或者

#include <iostream>
#include <string>
#include "util.h"
using namespace std;namespace common {namespace comm {namespace com {// 实现Test类的sum成员函数void Test::sum(int a, int b) {std::cout << "The sum of " << a << " and " << b << " is: " << a + b << std::endl;}int Test::num(int a, int b) {return a * b;}bool Test::number() {return true; // 示例返回true}} // 结束命名空间 com} // 结束命名空间 comm
} // 结束命名空间 common
int main() {int a =3;int b =6;using namespace common::comm::com;Test test;test.sum(a,b);int result = test.num(a,b);cout<< "num result" << result <<endl;bool isNumber = test.number();cout<< "number result" << isNumber <<endl;return 0;
}

相关文章:

C++ .h文件类的调用

demo1只有类的情况下调用 下面写一个util.h 文件里面 // 定义宏防止编译器重复编译 #ifndef TEST_H #define TEST_H class Test{ public:void sum(int a, int b);int num(int a, int b);bool number();}; #endif // TEST_H 调用的时候首先要引入这个头文件 #include "u…...

C语言:分支与循环

创造不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构&#xff0c;C语⾔是能够实 现这三种结构的&#xff0c;其实我们如果仔细分析&#xff0c;我们⽇常所⻅的事情都可以拆分…...

【linux系统体验】-archlinux折腾日记

archlinux 一、系统安装二、系统配置及美化2.1 中文输入法2.2 安装virtualbox增强工具2.3 终端美化 三、问题总结3.1 终端中文乱码 一、系统安装 安装步骤人们已经总结了很多很全: Arch Linux图文安装教程 大体步骤&#xff1a; 磁盘分区安装 Linux内核配置系统&#xff08;…...

常用数字处理格式校验

1、前端校验 1.1 要求为数字类型&#xff08;不限位数与正负&#xff09; input输入框添加 type“number” <el-input type"number"/>当typenumber时&#xff0c;仍然可以输入字母e或E。解决方法是&#xff1a;给typenumber的输入框添加一个正则表达式&…...

2024.1.26力扣每日一题——边权重均等查询

2024.1.26 题目来源我的题解方法一 使用dfs对每一组查询都求最近公共祖先&#xff08;会超时&#xff0c;通不过&#xff09;方法二 不需要构建图&#xff0c;直接在原始数组上进行求最大公共祖先的操作。 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2846 我的题解 …...

C语言操作符超详细总结

文章目录 1. 操作符的分类2. 二进制和进制转换2.1 2进制转10进制2.1.1 10进制转2进制数字 2.2 2进制转8进制和16进制2.2.1 2进制转8进制2.2.2 2进制转16进制 3. 原码、反码、补码4.移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符&#xff1a;&、|、^、~6. 逗号表达式…...

【Java八股面试系列】JVM-内存区域

目录 Java内存区域 运行时数据区域 线程独享区域 程序计数器 Java 虚拟机栈 StackFlowError&OOM 本地方法栈 线程共享区域 堆 GCR-分代回收算法 字符串常量池 方法区 运行时常量池 HotSpot 虚拟机对象探秘 对象的创建 对象的内存布局 句柄 Java内存区域 运…...

计划任务功能优化,应用商店上架软件超过100款,1Panel开源面板v1.9.6发布

2024年2月7日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.9.6版本。 在v1.9.5和v1.9.6这两个小版本中&#xff0c;1Panel针对计划任务等功能进行了多项优化和Bug修复。此外&#xff0c;1Panel应用商店新增了3款应用&#xff0c;上架精选软件应用超过1…...

蓝桥杯(Web大学组)2023省赛真题3:收集帛书碎片

需要实现&#xff1a; 1.将二维数组转为一维数组&#xff1b; 2.数组去重 一、将二维数组转为一维数组&#xff1a; 二、数组去重&#xff1a; function collectPuzzle(...puzzles) {// console.log(puzzles);// console.log(...puzzles);// TODO:在这里写入具体的实现逻辑/…...

使用QT编写一个简单QQ登录界面

widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置窗口标题this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(…...

TryHackMe-Net Sec Challenge练习

本文相关的TryHackMe实验房间链接&#xff1a;TryHackMe | Why Subscribe nmap nmap -T5 -p- 10.10.90.32 -T5 扫描速度 -p- 全端口扫描 答题&#xff1a; 这题叫我们找藏在http服务下的flag&#xff0c;根据上面扫出来的端口&#xff0c;所以我们开始搞80 这里简单介绍一下…...

面试 JavaScript 框架八股文十问十答第五期

面试 JavaScript 框架八股文十问十答第五期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;常见的位运算符有…...

[职场] 如何通过运营面试_1 #笔记#媒体#经验分享

如何通过运营面试 盈利是公司的事情&#xff0c;而用户就是你运营的事情。你需要彻底建立一个庞大而有效的用户群&#xff0c;这样才能让你们的公司想盈利就盈利&#xff0c;想战略就战略&#xff0c;想融资就融资。 一般从事运营的人有着强大的自信心&#xff0c;后台数据分析…...

CTFshow web(命令执行 41-44)

web41 <?php /* # -*- coding: utf-8 -*- # Author: 羽 # Date: 2020-09-05 20:31:22 # Last Modified by: h1xa # Last Modified time: 2020-09-05 22:40:07 # email: 1341963450qq.com # link: https://ctf.show */ if(isset($_POST[c])){ $c $_POST[c]; if(!p…...

XML介绍和基本语法

XML简介 XML&#xff08;eXtensible Markup Language&#xff0c;可扩展标记语言&#xff09;是一种用于标记电子文件使其具有结构性的标记语言。它允许用户定义自己的标记元素&#xff0c;使得信息的共享和数据的存储更加便捷和通用。XML广泛应用于Web开发、配置文件、数据交…...

Android:Android Studio安装及环境配置

1开发环境搭建 Android开发需要使用java的jdk环境,所以需要下载JAVA JDK。 1.1安装配置JAVA JDK Java的JDK下载: https://www.oracle.com/technetwork/java/javase/downloads/index.html 配置java的环境变量: JAVA_HOME:java安装路径。 新增环境变量CLASSPATH 在Path环境…...

力扣刷题之旅:进阶篇(三)

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 一、动态规划&#xff08;DP&#xff09; 首先&#xff0c;让我们来…...

代码随想录 Leetcode55. 跳跃游戏

题目&#xff1a; 代码(首刷自解 2024年2月9日&#xff09;&#xff1a; class Solution { public:bool canJump(vector<int>& nums) {int noz 0;for (int i nums.size() - 2; i > 0; --i) {if (nums[i] 0) {noz;continue;} else {if (nums[i] > noz) noz …...

Go Context -- 管理请求的上下文信息

在Go语言中&#xff0c;管理请求的上下文信息对于构建可靠的并发程序至关重要。context 包为我们提供了一种优雅的方式来传递请求的取消信号、超时信息和请求范围的值。接下来将深入探讨Go中的 context 包&#xff0c;包括其基本概念、用法、实际应用场景和最佳实践&#xff0c…...

springboot170图书电子商务网站的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

仅限档案学研究者获取:NotebookLM定制提示词库V2.3(含17个NARA/中国第一历史档案馆认证模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM档案学研究辅助 NotebookLM 是 Google 推出的基于 LLM 的研究型笔记工具&#xff0c;其核心能力在于对用户上传的私有文档&#xff08;如 PDF、TXT、DOCX&#xff09;进行语义理解与上下文关…...

如何快速设置Translumo:面向初学者的完整实时屏幕翻译指南

如何快速设置Translumo&#xff1a;面向初学者的完整实时屏幕翻译指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是…...

NOMA实战:从叠加编码到SIC解码的链路级仿真解析

1. NOMA技术基础与核心原理 NOMA&#xff08;非正交多址接入&#xff09;是5G通信中的一项关键技术&#xff0c;它彻底改变了传统正交多址技术&#xff08;如OFDMA&#xff09;的资源分配方式。我第一次接触NOMA时&#xff0c;最让我惊讶的是它竟然主动引入干扰来提升频谱效率—…...

深入理解C/C++混合编程

在工作中&#xff0c;C、C密不可分&#xff0c;做我们嵌入式方面的&#xff0c;当然更多的是C&#xff0c;但&#xff0c;有时候却少不了C&#xff0c;而且是C、C混搭&#xff08;混合编程&#xff09;在一起的&#xff0c;比如&#xff0c;RTP视频传输&#xff0c;live555多媒…...

JiYuTrainer学习自由解决方案:重新定义课堂自主权的教育技术工具

JiYuTrainer学习自由解决方案&#xff1a;重新定义课堂自主权的教育技术工具 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你还记得那种感觉吗&#xff1f;当老师在讲台上演示关…...

技能与代码审计融合实践:构建安全开发思维与实战靶场

1. 项目概述&#xff1a;技能与代码审计的融合实践最近在和一些做安全开发的朋友聊天&#xff0c;大家普遍有个感受&#xff1a;现在单纯会写代码&#xff0c;或者单纯懂点安全皮毛&#xff0c;已经越来越不够用了。一个功能上线&#xff0c;开发觉得逻辑完美&#xff0c;但安全…...

深度解析RPG资源解密:Java-RPG-Maker-MV-Decrypter的3大核心技术揭秘

深度解析RPG资源解密&#xff1a;Java-RPG-Maker-MV-Decrypter的3大核心技术揭秘 【免费下载链接】Java-RPG-Maker-MV-Decrypter You can decrypt whole RPG-Maker MV Directories with this Program, it also has a GUI. 项目地址: https://gitcode.com/gh_mirrors/ja/Java-…...

苹果防线全线血崩,Mythos5天攻破最强硬件,全球20亿台设备危了

太震撼了&#xff0c;苹果花5年数十亿美元造出最强硬件安全防线MIE&#xff0c;三个黑客加一个AI&#xff0c;5天就把它打穿了&#xff01;20亿台苹果设备的安全逻辑正在被改写&#xff0c;人类安全系统正迎来「奥本海默时刻」 。 就在刚刚&#xff0c;苹果这座「永不陷落的堡…...

告别裸机轮询:在STM32F103上为AHT20温湿度采集加入FreeRTOS实时任务管理

从裸机轮询到RTOS任务管理&#xff1a;STM32F103与AHT20温湿度传感器的架构升级实战 在嵌入式开发领域&#xff0c;如何从简单的功能实现进阶到健壮的软件架构设计&#xff0c;是每个开发者必须面对的挑战。本文将带你完成一次典型的架构升级——将基于STM32F103的AHT20温湿度传…...

从PCB布线到外壳开孔:一个智能硬件产品的EMC设计避坑全记录

从PCB布线到外壳开孔&#xff1a;一个智能硬件产品的EMC设计避坑全记录 在智能硬件产品的研发过程中&#xff0c;电磁兼容性&#xff08;EMC&#xff09;设计往往是决定产品能否顺利通过认证测试的关键因素。作为一名经历过多次EMC整改的硬件工程师&#xff0c;我想通过一个真实…...