此时是构造函数中调用的基类的构造函数

时间:2013-11-26 10:57:04

标签: c++ constructor initialization-list

我需要知道在派生类构造函数的调用中何时调用基类的构造函数。

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

1 个答案:

答案 0 :(得分:1)

构造函数的调用顺序是1st Base类,然后是派生类。

在当前的例子中 构造函数的调用顺序如下: Basis1 Basis2 衍生

如果我们将类定义更改为

类派生:Basis2,Basis1

然后构造函数调用的顺序是: Basis2 Basis1 衍生

基类构造函数总是在派生类之前调用​​,无论是否从初始化列表中显式调用。