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避免重复引入
#pragma once
class Student{
public:
const char *name;
int age;
float score;
void say();
};
源文件1:
#include <iostream>
#include "student.hpp"
void Student::say()
{
std::cout << "name: " << name << std::endl;
std::cout << "age: " << age << std::endl;
std::cout << "score: " << score << std::endl;
}
源文件2:
#include <iostream>
#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:\study\cplusplus\day8\student> make
g++ -Wall -g -O0 -o student main.cpp student.cpp
PS D:\study\cplusplus\day8\student> .\student.exe
name: XiaoMing
age: 15
score: 99.9
拓展:
C++ const常量如何在多文件编程中使用?
读完本文,你就能彻底明白C++多文件编程!
|