查看boost的源代码,可以看到,boost都使用了hpp文件,为何要使用hpp文件呢?
什么是hpp文件
hpp文件就是把函数的声明和实现写在一个文件里面了,以往我们写c++代码时,会把函数的声明放在头文件.h中,函数实现放在.cpp文件中,而.hpp文件就相当于把声明和实现写在了一起。
再模板类中,由于模板两次编译的机制:
1.实例化前,先检查模板代码本身,查看语法是否正确。
2.实例化期间,检查模板代码,查看是否所有的调用都有效。
如果模板类的声明和实现分开写,直接包含头文件会出现找不到函数的情况,必须写在同一个文件中。
使用hpp文件好处
1.hpp 文件将定义和实现放在同一个文件,减少了文件的数量
2.无需再将 cpp 加入到项目中进行编译,将代码直接编译到调用者的 obj 文件,不再生成单独的 obj,大幅度减少编译次数,非常适合编写开源库
3.boost 库大量使用模板,采用 hpp 的形式可以保持与各个编译器更好的兼容性(C++ 模板不能把源文件和声明文件分开成两个文件)
相关面试题
Boost库中为什么大量使用hpp文件?基于什么考虑?
模板的实现可以写在.h文件中吗?
C++模板类代码只能写在头文件?