C++的头文件(.h文件)是写一些函数及变量声明用的,函数的实现可能在lib或dll中(源码不可见),也可能在obj(cpp,源码可见)中,
使用它的原因是:
1)源码不可见:保护源码(以牟利或者安全考量),这样在调用函数的时候,只需要知道函数接口(函数名,参数和返回值);如果没有该头文件技术,则每次使用都需要将函数源代码写到工程源文件中进行统一的编译。
2)源码可见:不用每次调用函数都将函数代码写到相应的源文件中,因为调用的时候只需要知道函数接口即可。
还有一种头文件,可以成为扩展头文件。.hpp(header plus plus)文件是.h文件的扩展,它将.cpp(c plus plus)文件中的内容放到.h文件中,这样.cpp中的代码将被编译头文件的时候执行,具有优先执行的特权。这样就失去了上面说头文件的优点,但新增加了一些优势:
“该类的调用者只需要include该文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用这种方式将大幅度减少调用 project中的cpp文件数与编译次数,只需“#include <xxx>”就可以使用类库的相应功能,不需要link到.lib/.a/.so/.dll等静/动态库。使用者方便,维护者省事,特别是对于一些轻量级的类库,因此非常适合用来编写公用的开源库。类似的例子有STL和boost中的一些组件以及正则库DEELX等等。”