【发布时间】:2011-11-16 09:03:07
【问题描述】:
多重继承的构造函数会被多次调用吗?构造函数的调用顺序是什么?这是否取决于继承列表中的顺序?
这是一个例子(只是为了说明情况,没有现实生活中的例子)。
class Base {};
class DerivedBaseOne : public Base {};
class DerivedBaseTwo : public Base {};
class Derived : public DerivedBaseTwo, public DerivedBaseOne
{};
//somewhere in the code, is Base() called two times here?
Derived * foo = new Derived();
Base() 构造函数是否被调用了两次?构造函数的调用顺序是什么?先打基础?还是先DerivedBaseOne() 或DerivedBaseTwo()?
【问题讨论】:
-
您可能还在考虑虚拟继承,因为这与普通继承略有不同。
-
继承构造函数是 c++11 的一个特性,意义完全不同。
标签: c++ inheritance constructor multiple-inheritance