定义一个类的成员函数?

时间:2012-08-10 06:14:13

标签: c++ c function member-functions

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

2 个答案:

答案 0 :(得分:3)

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

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

除此之外,这是编码风格的问题。您通常会保持标头清洁,以便仅提供用于处理类的接口,并抽象出实现细节。

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

答案 1 :(得分:3)

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

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

另外,阅读.h文件中的代码更加困难,因为您希望在.h中看到该类的界面,而不是实现。