默认构造函数需要调用基类默认构造函数吗?

时间:2014-04-09 01:37:02

标签: c++ constructor

正在阅读this answer并且让我感到惊讶,建议您必须总是在派生类构造函数中调用基类构造函数。如果您只使用默认构造函数,请考虑以下内容:

class Bar : public Foo {
private:
int y;

public:
Bar() : Foo(), y(0) {
}

...

这里真的有必要调用Foo()吗?

3 个答案:

答案 0 :(得分:2)

您不需要在构造函数中显式调用基类构造函数,在这种情况下,编译器隐式调用默认构造函数,或者您获得编译时错误,如果没有可调用的话 同样适用于非POD的成员。

另一种选择是成员初始化列表,包含对您的类的另一个构造函数的委派,从而创建委托构造函数。

答案 1 :(得分:2)

不,你不是。这样做的原因是可读性。阅读起来比较清楚,可能会暗示一些IDE辅助逻辑,就像使用Baseclass :: Baseclass()方法一样。

答案 2 :(得分:0)

你不需要打电话给他们,但我认为这在可读性方面是一个好主意,并且也证明了那些审查你理解该类派生的代码的人。