与派生类构造函数的初始化列表顺序无关,是按如下顺序:
1.基类构造函数(按继承时的顺序)
2.子对象构造函数(按类中声明的顺序)
3.派生类自己的构造函数
析构时:
与构造时相反
测试程序如下:
#include <iostream>
using namespace std;
class A
{
public:
A(){ cout << "A" << endl; }
~A(){ cout << "~A" << endl; }
};
class B
{
public:
B(){ cout << "B" << endl; }
~B(){ cout << "~B" << endl; }
};
class C
{
public:
C(){ cout << "C" << endl; }
~C(){ cout << "~C" << endl; }
};
class D
{
public:
int d;
D(){ cout << "D1" << endl; }
D(int a):d(a){ cout << "D2" << endl; }
~D(){ cout << "~D" << endl; }
};
class E:public B, public A
{
public:

本文详细介绍了C++派生类中基类构造函数、子对象构造函数以及派生类自身构造函数的执行顺序,并通过一个测试程序进行验证。在构造时,顺序依次为:基类构造函数、子对象构造函数(按声明顺序)、派生类构造函数。而在析构时,顺序与构造相反。测试程序展示了这个顺序,帮助理解C++的构造与析构机制。
最低0.47元/天 解锁文章
959





