下面的内容都是在Linux下进行,C++配合Linux更香哦。在windows中的.cpp在Linux中叫做.cc,下面会混合使用,都是指同个东西。
1 为什么需要头文件
在上一篇文章中我们谈到程序编写的一大原则是“高内聚,低耦合”,这就要求我们尽可能把程序分离成各个比较独立的模块,而一个个模块对应一个个的.cpp文件。既然每个.cpp之间比较独立,那么当A.cpp用到B.cpp的内容时,遇到了两个问题:一个是不知道B.cpp中哪些东西可以拿来用,怎么用?另一个问题是在A.cpp中怎么标明现在用到的这些东西属于B.cpp而不是C.cpp或者D.cpp?
于是头文件.h就诞生了。各个.cpp间比较独立,并不直接沟通,每个.cpp有自己的代言人.h(当然main.cpp没有),借助.h进行沟通。当A.cpp用到B.cpp中的内容时,它不需要去打扰B.cpp,它只要载入B.h就行。在B.h中有B.cpp的内容的梗概,B.h承诺说我的这些梗概都是有对应的实体的,这些实体在某个.cpp文件中,你暂且用着,到时候编译时我再给你这些实体。
2 头文件长什么样
下面编写一个库文件B.cpp与其代言人头文件B.h:
//B.h
#ifndef _B_H_
#define _B_H_
extern int b;
class B {
public:
void showMe ();
};
#endif