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中添加源文件:

保存时注意输入正确的名称】

运行效果:

关于C++多文件编程还可参考https://blog.csdn/cnds123/article/details/109102262 一文的 C++文件包含部分。

更多推荐

C++多文件编程介绍