2

我正在写一本关于 c++ 的书,为了解决问题,我总是被要求在 xxxxxx.h 文件中声明成员函数的原型,并在 xxxxxx.cpp 文件中正确定义函数体。在 .h 文件中定义成员函数有什么害处或缺点吗?如果没有,在 .cpp 文件中定义它们有什么好处或优势吗?

4

2 回答 2

3

如果在标头中定义方法,则必须将其标记为inline或在类定义中定义它们以防止多个定义:

//A.h
class A
{
    void f()
    {
    }
    void g();
};
inline void A::g() 
{
};

除此之外,这是编码风格的问题。你通常保持你的标题干净,只提供一个接口来处理类,并抽象出实现细节。

一般来说。在某些情况下,您必须在标头(模板)中定义函数,或者在需要时(以允许更好的编译器优化)。

于 2012-08-10T06:16:53.733 回答
3

如果您总是将代码编写在.h文件中,您将永远无法执行某些技术,例如forward declaration. 由于在标头中编写代码时不能使用前向声明,因此您将无法解决cross dependencies.

因此,您需要在.h文件中包含您需要的所有内容。将此文件包含在其他文件中将包含已包含的所有内容。因此,在许多情况下,您代码中的任何微小更改都会导致几乎完全重新编译。

此外,更难阅读.h文件中的代码,因为您希望在 中看到类的接口.h,而不是实现。

于 2012-08-10T06:18:35.833 回答