C++中的头文件(.h)和源文件(.cpp)都应该写什么?
头文件(.h):写定义和声明
写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但是一般来说不写具体的实现。
注意:
1、在写头文件的时候需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
#ifndef PERSON_H
#define PERSON_H
//中间写你的代码
#endif
这样做是为了防止重复编译,不这样做就有可能会出错。
至于PERSON_H这个名字可以随便取,只要符合规范就行,但是建议把它写成与源文件的名字对应。
源文件(.cpp):写实现
源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及你需要用到的头文件。那么当你需要用到自己写的头文件中类时,只需要#include进来就行了。
注意:
1、在.h文件中定义了类的属性,在.cpp文件中就不要重复定义,否则链接的时候会报错
2、很多人都是先学的C,所以在包含头文件的时候喜欢用<>,例如#include <iostream>,但是在包含自己写的头文件的时候一定要用"",否则可能会报错:No such file or directory
下面举一个简单的例子:
第一步,建立一个空工程(以在Visual C++ 6.0)环境下为例
点击菜单栏的file - > 选择new(新建) -> 选择project(工程)目录下的Win32 Console Application选项 -> 在右侧输入工程名和存储的位置,下一步 -> 选择“一个 空工 程”,点击完成
第二步,新建头文件Person.h,它的内容如下:
1 #ifndef PERSON_H 2 #define PERSON_H 3 class Person 4 { 5 public: 6 int age; 7 char* name; 8 char* sex; 9 public: 10 Person(); //构造函数 11 void say(); 12 }; 13 #endif
第三步,要给出Person类的具体实现,因此,新建源文件Person.cpp,它的内容如下:
1 #include <iostream> 2 #include "Person.h" 3 4 using namespace std; 5 6 Person::Person() 7 { 8 cout << "创建了一个新的对象!" << endl; 9 } 10 11 void Person::say() 12 { 13 cout << "大家好,我叫" << name << ",性别" << sex << ",今年" << age << "岁." << endl; 14 }
注意:此处需要将头文件Person.h包含进来。
最后我们新建一个test.cpp来测试我们写的Person类:
1 #include <iostream> 2 #include "Person.h" 3 4 using namespace std; 5 6 int main() 7 { 8 Person xc; 9 10 xc.age = 18; 11 xc.name = "流浪"; 12 xc.sex = "男"; 13 14 xc.say(); 15 return 0; 16 }
注意到开头时有#include "Person.h"的声明,证明我们使用到了我们刚写的Person类。
运行后的输出结果为:
这是最简单的用法,有错误之处请大家指正!
参考博客:https://www.cnblogs.com/fenghuan/p/4794514.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)