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