答:(1)先调用基类中的构造函数(如果有多个基类,根据继承时声明的顺序进行初始化)
(2)再调用成员类中的构造函数(如果有多个成员类,根据其声明的顺序进行初始化)
(3)最后初始化派生类本身的构造函数
实例分析:
#include<iostream>
class A
{
public:A{…}
~A{…}
};
class B
{
public:B{…}
~B{…}
};
class D
{
public:D{…}
~D{…}
};
class E
{
public:E{…}
~E{…}
};
class C :public A,public B
{
public:C{…}
private:
D objD_;
E objE_;
~C{…}
}
int main(void)
{
C test;
return 0;
}
运行过程分析:
//构造函数调用的顺序
A{…}
B{…}
D{…}
E{…}
C{…}
//析构函数调用顺序
~C{…}
~E{…}
~D{…}
~B{…}
~A{…}