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,它的内容如下:
#ifndef PERSON_H
#define PERSON_H
class Person
{
public:
int age;
char* name;
char* sex;
public:
Person(); //构造函数
void say();
};
#endif
第三步,要给出Person类的具体实现,因此,新建源文件Person.cpp,它的内容如下:
#include <iostream>
#include "Person.h" using namespace std; Person::Person()
{
cout << "创建了一个新的对象!" << endl;
} void Person::say()
{
cout << "大家好,我叫" << name << ",性别" << sex << ",今年" << age << "岁." << endl;
}
注意:此处需要将头文件Person.h包含进来。
最后我们新建一个test.cpp来测试我们写的Person类:
#include <iostream>
#include "Person.h" using namespace std; int main()
{
Person xc; xc.age = ;
xc.name = "流浪";
xc.sex = "男"; xc.say();
return ;
}
注意到开头时有#include "Person.h"的声明,证明我们使用到了我们刚写的Person类。
运行后的输出结果为:

这是最简单的用法,有错误之处请大家指正!
参考博客:https://www.cnblogs.com/fenghuan/p/4794514.html
C++中的头文件(.h)和源文件(.cpp)都应该写什么?的更多相关文章
- 浅谈头文件(.h)和源文件(.cpp)的区别
浅谈头文件(.h)和源文件(.cpp)的区别 本人原来在大一写C的时候,都是所有代码写在一个文件里一锅乱煮.经过自己开始写程序之后,发现一个工程只有一定是由多个不同功能.分门别类展开的文件构成的.一锅 ...
- 理解C++中的头文件和源文件的作用【转】
一.C++编译模式通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C+ ...
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 右键选择该文件.cpp格式的->属性->预编译头,→ 不使用预编译 ...
- C++基础之头文件和源文件的关系
今天找了个解析xml的开源C++项目tinyxml,按照网上的说法去编译,但是一直编译不通过,"无法打开头文件tinyxml.h",但是明明我在工程底下有了这个文件,对于我这种初学 ...
- C语言中,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- C头文件和源文件的连
(http://blog.163.com/yui_program/blog/static/18415541520115177852896/) 一.源文件如何根据#include来关联头文件 1,系统自 ...
- C++中头文件(.h)和源文件(.cpp)都应该写些什么
头文件(.h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但一般来说不写出具体的实现. 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): ...
- C++ 中头文件(.h)和源文件(.cc)的写法简述
用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 .下面就非常简洁明了地谈谈头文件(.h)和源文件(.cc)应该怎么写. 头文件(.h):写类的声明(包括类里面的成员和方法的声明).函 ...
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”? 解决方法
错误描述: fatal error C1010: 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 错误分析: 此错误发 ...
随机推荐
- SQL脚本整理系列一 分隔函数
原来效果: fName Scroe 王某某 ,, 李某某 , 王某某 李某某 李某某 ,, 王某某 执行后效果: name score 李某某 李某某 李某某 王某某 王某某 王某某 王某某 王某某 ...
- CheckBox 样式
.cb td { width: 100px; } .cb label { display: inline-block; ...
- Hashtable 键值对集合
// Hashtable 键值对集合 一个键对应一个值 Hashtable ht=new Hashtable(); ht.Add(,"张三"); ht.Add(,'男'); ht ...
- Ling之select
select用法: 1.Dictionary<string, string>转json Newtonsoft.Json.JsonConvert.SerializeObject(dicSub ...
- tomcat常用技巧
1. 修改Tomcat的名称 适用场景: 在测试服务器资源有限或是在本机服务器部署多套应用系统时,由于要启动多个TOMCAT服务,且TOMCAT服务没有用名称去区分,会造成维护使用上存在一定晨读的不方 ...
- springBoot 中redis 注解缓存的使用
1,首先在启动类上加上 @EnableCaching 这个注解 在查询类的controller,或service ,dao 中方法上加 @Cacheable 更新或修改方法上加 @CachePut 注 ...
- 一般处理程序、ASP.NET和MVC的区别
这个问题说起来,我有点惭愧 想当初在大学里学的就是ASP.NET WebForms 在实习期间也是用的WebForms来开发网站,然后就觉得.NET开发网站就是用这个开发模式 现在想想都想笑...实在 ...
- Drupal Module Hooks
Drupal is a Content Management System. Drupal is also deeply, deeply weird. While systems like Magen ...
- 单链表的插入伪算法和用C语言创建单链表,并遍历
非循环单链表插入结点伪算法讲解 q插入p之后的伪算法:第一种表示方法:r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址p-> ...
- 打杂程序员之nginx服务配置
现在公司要在服务器上多加个网站用同一个nginx服务器,而且都是公用80端口. 因为服务器上跑着好几个网站了,所以配置文件配置完成时候要检测一下能不能用,用nginx -t:最好不要直接杀死nginx ...