子类包含父类成员的构造与析构顺序
子类包含父类成员的构造与析构顺序
#include <iostream>
using namespace std;
class F1{
public:
F1() {cout << "F1 构造函数" << endl;}
~F1() {cout << "F1 析构函数" << endl;}
};
class F2{
public:
F2() {cout << "F2 构造函数" << endl;}
~F2() {cout << "F2 析构函数" << endl;}
};
class F3{
public:
F3() {cout << "F3 构造函数" << endl;}
~F3() {cout << "F3 析构函数" << endl;}
};
class Son : public F2 , public F1 , public F3{
public:
Son() {cout << "Son 构造函数" << endl;}
~Son() {cout << "Son 析构函数" << endl;}
F1 f1;
F2 f2;
};
int main() {
Son s;
return 0;
}
结果显示,先根据子类的继承顺序调用父类的构造函数,然后根据子类内部成员的声明顺序调用父类构造函数,最后才调用子类的构造函数。析构函数的调用顺序则相反。
F2 构造函数
F1 构造函数
F3 构造函数
F1 构造函数
F2 构造函数
Son 构造函数
Son 析构函数
F2 析构函数
F1 析构函数
F3 析构函数
F1 析构函数
F2 析构函数