C++多文件编程介绍
多文件编程的意义
稍微大一点的项目不会是单个文件的,多文件便于分工协作、代码复用和修改、结构清晰便于后期的维护。
一个C++语言源程序可以由一个或多个源文件组成。一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
本文演使用的工具是Windows下的集成开发环境Dev-C++的。
从多文件编程的角度,C++程序文件一般分三类:
头文件( .h )。放置各种声明,用于被cpp文件包含。
模块文件(.cpp)。放置一些函数定义,也称为功能模块。
主程序文件(.cpp)。包含main()的文件,程序入口,调用模块文件实现的方法。
学过C/C++的人,都会使用过头文件,实际上,在 .cpp 中编写的代码同样也可以写在 .h 中。之所以将 .cpp 文件和 .h 文件在项目中承担的角色进行区别,不是 C++ 语法的规定,而是约定成俗的规范,读者遵守即可。
头文件,其实它的内容跟 .cpp 文件中的内容是一样的,都是 C++ 的源代码,唯一的区别在于头文件不用被编译。我们把所有的函数声明全部放进一个头文件中,当某一个 .cpp 源文件需要时,可以通过 #include 宏命令直接将头文件中的所有内容引入到 .cpp 文件中。
在学习C++开始阶段,我们一般C++单文件编程开始,即所有的代码写到一个源文件里面,例如:
//C++单文件编程:将所有的代码写到一个源文件里面
#include <iostream>
using namespace std;
class Student{
public:
char *name;
int age;
float score;
void say(){
cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
}
};
int main(){
Student *pStu = new Student;
pStu -> name = "小明";
pStu -> age = 15;
pStu -> score = 92.5f;
pStu -> say();
delete pStu; //删除对象
return 0;
}
运行效果:
对于代码量几十行或者几百行的小程序,放在单文件是可以的,但当程序代码较多时,为了方便后期的维护,采用多文件编程分散代码,分别将相同或相近功能的代码存储在一个文件中,便于分工协作、代码复用和修改。为了演示C++多文件编程,我们特意将上面这个不太复制的程序,改造一下。
下面为演示多文件编程将上面程序拆分成两个文件。项目的目录结构如下:
分成2个文件:
Student2.h文件内容如下:
//student2.cpp
#include <iostream> //std::cout、std::endl
using namespace std;
class Student {
public:
const char *name;
int age;
float score;
void say() {
cout << name << "的年龄是" << age << ",成绩是" << score <<endl;
}
};
main2.h文件内容如下:
//main2.cpp
#include "student2.cpp" //Student
int main() {
Student *pStu = new Student;
pStu->name = "小明";
pStu->age = 15;
pStu->score = 92.5f;
pStu->say();
delete pStu; //删除对象
return 0;
}
在dev-c++下建一个Project(提示:创建项目会生成一个dev文件,这个dev文件保存了项目的相关信息):
Project类型选择 “Console Application”
输入Project名称,参见下图:
【提示新建Project后,可以看到,系统已经为我们在mian.cpp文件中编辑好了部分代码,保存时可改名,我这里改为mian2.cpp。还可以往此Project中添加源文件:
保存时注意输入正确的名称】
运行效果: