我需要知道在派生类构造函数的调用中何时调用基类的构造函数。
Small example:
class Base1
{...}
class Base2
{...}
class Derived : Base1,Base2
{...}
int main (int argc, char** argv)
{
Derived Child;
}
使用命令Derived Child;
调用Derived
的构造函数,但我已经读过,在执行Derived
类构造函数之前执行所有基础构造函数,即Base1和Base2的构造函数
所以我想知道如果类Derived
的构造函数看起来像这样,事件顺序是什么
Derived::Derived (Parameters)
: //initialization list
Base2 (Parameters)
{...}
类Base2
的构造函数现在是在构造函数Derived
的初始化列表中调用还是之前调用过。此外,所有基类构造函数在构造函数Derived
的调用开始时调用,或者在类Derived
构造函数的初始化列表开始时调用。
问候 streight
答案 0 :(得分:1)
构造函数的调用顺序是1st Base类,然后是派生类。
在当前的例子中 构造函数的调用顺序如下: Basis1 Basis2 衍生
如果我们将类定义更改为
类派生:Basis2,Basis1
然后构造函数调用的顺序是: Basis2 Basis1 衍生
基类构造函数总是在派生类之前调用,无论是否从初始化列表中显式调用。