弱弱问 一下: c++头文件
请问: 在linux C++中,hpp文件应该是头文件吧 ,里面有一些函数的实现,我现在不是很明白,函数实现,什么时候在cpp文件中,什么时候在hpp文件中,他们两者的功能怎么划分的 ,谢谢。
[解决办法]
若声明的函数及实现代码繁多,就另启cpp文件来实现;若函数较少及实现代码比较少,可以直接在hpp中实现
[解决办法]
他们两者的功能怎么划分的
=================
功能上基本上没有多大的区别
一个.hpp/.h文件编译起来比.hpp/.h + .cpp 来的快一点点...
[解决办法]
通常,如果一个函数在头文件中定义,而此头文件却被多个cpp文件所包含,则结果会发生函数重定义错误。
但两种情况除外:
(1)内联函数:内联函数必须定义在头文件中,严格地说法应该是:内联函数的函数体必须有所有被调用的文件中可见,而能达到这个目的的最简单的办法就是把它放进头文件中,然后让每一个需要调用这个函数的cpp文件都include那个头文件。
原因是内联函数展开发生在编译时,如果在调用处看不到函数的定义,而只有一个声明的话,那编译器如何能做内联展开?
(2)函数模板或模板类的成员函数:模板的实例化,特化,偏特化等都发生在编译时,如果在调用的地方看不见函数声义,那所有的实例化,特化,偏特化同样也是无法进行。所以,最通用的办法也是把模板的定义放进头文件中。
针对以上两种特殊需要,编译器是不会报重定义错误的。