当我可以在头文件中声明和定义它时,为什么要创建一个 .cpp 文件?

jvr*_*sem 3 c++ oop header-files

我理解并非常欣赏分离头文件(.h、.hpp)和源文件(.cpp)的做法。

然而,许多简单的类可以完全在头文件本身中表达。我可以在类中定义一些方法,在类下定义其他方法(例如模板方法、内联方法)。

当我可以在头文件中声明定义整个类时,创建 .cpp 文件有什么好处?(我什至需要吗?)

Jef*_*ica 7

如果头文件中有代码,则每当头更改时,也必须重新编译包含该头的客户端代码。使用单独的 cpp 文件,只需要重新链接。在大型项目中,差异可能以小时为单位。

如果您构建一个库并仅分发头文件,则将代码放在 .cpp 文件中会对用户隐藏它。有时这是必要的。

通过拥有头文件,您可以保持客户端代码不变并替换库(例如在调试和发布之间,或常规和调用跟踪版本之间)。这对于调试或调查问题很有用。

将头文件放在一边可以使文件更小,更容易被类用户理解。您可以在 .cpp 文件中隐藏复杂性。


Que*_*est 0

没有什么可以阻止您将所有内容都包含在头文件中。但是,否则可能会对项目本身产生各种影响,在某些情况下,由于没有编译依赖于您刚刚更改的文件的所有内容,因此可以提高可读性并积极提高编译速度。

通常,对于小班或很少变化的班来说,它几乎没有任何影响。

我要指出的是,随着 > c++20 和模块的包含,事情会慢慢改变,我们将开始看到更多纯粹写在头文件中的代码(如果它们仍然会这样调用)。

尽管如此,这是一个基于意见的问题,没有一个好的答案。