在C++项目中为每个.h创建一个.cpp是一个好习惯吗?

lur*_*rks 7 c++ compilation header-files

某些类(如异常或模板)只需要头文件(.h),通常没有与之相关的.cpp.

我已经看到一些项目(对于某些类)没有与头文件关联的任何.cpp文件,可能是因为实现很短,直接在.h中完成,或者可能由于其他原因,例如模板类,必须在头文件中包含实现.

您的意见是什么,如果一个类太短,我应该避免创建.cpp文件并直接在头文件上编写代码?如果代码写在头文件中,我应该包含一个空的.cpp,以便项目中的文件保持一致吗?

Ree*_*sey 14

我不会添加不必要的.cpp文件.您添加的每个.cpp文件都必须编译,这只会减慢构建过程.

一般来说,使用你的类只需要头文件 - 我认为"空".cpp文件没有优势,以保证项目的一致性.


Gru*_*rig 8

不.如果.cpp中没有任何内容,则不需要.cpp.


Bor*_*ein 5

总是为每个 .h 创建一个 .cpp 有一个好处,即使前者是空的:它在编译时强制头文件是自包含的。这与在 foo.cpp 中首先包含 foo.h的准则有关:

根据首选顺序,如果 dir2/foo2.h 省略任何必要的包含,则 dir/foo.cpp 的构建将中断。因此,此规则确保构建中断首先出现在处理这些文件的人员身上,而不是其他包中的无辜人员。