为什么非模板 类 应该在头文件和源文件中分开?

Why non-template classes should be separated in header and source files?

谁能帮我理解一下,为什么对于非模板类,建议将头文件和源文件中的代码分开?这只是代码样式还是这种方法避免了可能的错误(例如,链接器错误)?

我想知道,因为在模板 类 的情况下,我们甚至不允许进行分离。

非常感谢!

Is that only code styling or does this approach avoid possible errors (e.g., linker errors)?

主要用于减少编译阶段实现细节的相互依赖,从而降低整体编译时间。

如果您更改内联实现,所有看到它的翻译单元都需要重新编译。

在头文件中单独声明并且仅引用非模板函数或类的函数接口(签名),如果内部实现发生变化,则不需要重新编译。


I'm wondering since in case of template classes, we are not even allowed to do the separation.

模板有点不同,因为类型参数被注入到定义中。这些不能在单独的翻译单元中实例化,除非在那里跟踪并实现所有可预见的类型特化。