C++ | C++ 多文件编程1
事实上,一个完整的 C++ 项目常常是由多个代码文件组成的,根据后缀名的不同,大致可以将它们分为如下 2 类:
-
.h (.hpp)文件:又称“头文件”,用于存放常量、函数的声明部分、类的声明部分;
-
.cpp 文件:又称“源文件”,用于存放变量、函数的定义部分,类的实现部分。
实际上,.cpp 文件和 .h 文件都是源文件,除了后缀不一样便于区分和管理外,其他的几乎相同,在 .cpp 中编写的代码同样也可以写在 .h 中。之所以将 .cpp 文件和 .h 文件在项目中承担的角色进行区别,不是 C++ 语法的规定,而是约定成俗的规范,读者遵守即可。
工程目录
fly@fly-PC /cygdrive/d/study/cplusplus/day8/student
$ ls
Makefile cplusplus-multifile-code.md main.cpp student.cpp student.hpp
头文件:
使用#pragma once避免重复引入
/*******************************************************************
* > File Name: student.hpp
* > Create Time: 2021年09月21日 11:07:31
******************************************************************/
// 负责存储 Student 类的声明部分
#pragma once
class Student{
public:
const char *name;
int age;
float score;
void say();
};
源文件1:
/*******************************************************************
* > File Name: student.cpp
* > Create Time: 2021年09月21日 11:07:31
******************************************************************/
// 负责存储 Student 类中成员函数的定义部分
#include
#include "student.hpp"
void Student::say()
{
std::cout std::cout std::cout }
源文件2:
/*******************************************************************
* > File Name: main.cpp
* > Create Time: 2021年09月21日 11:09:37
******************************************************************/
// 负责存储主程序(main() 函数)
#include
#include "student.hpp"
using namespace std;
int main(int argc, char* argv[])
{
Student *pstu = new Student;
pstu->name = "XiaoMing";
pstu->age = 15;
pstu->score = 99.9;
pstu->say();
delete pstu;
return 0;
}
Makefile文件:
CXX = g++
CFLAGS = -Wall -g -O0
OBJS = student
SRC = main.cpp student.cpp
$(OBJS):$(SRC)
$(CXX) $(CFLAGS) -o $@ $^
clean:
$(RM) $(OBJS) .*.sw?
编译、运行:
PS D:studycplusplusday8student> make
g++ -Wall -g -O0 -o student main.cpp student.cpp
PS D:studycplusplusday8student> .student.exe
name: XiaoMing
age: 15
score: 99.9
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net