uacs2024

导航

子类包含父类成员的构造与析构顺序

子类包含父类成员的构造与析构顺序

#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 析构函数

 

posted on 2024-03-08 14:45  ᶜʸᵃⁿ  阅读(5)  评论(0编辑  收藏  举报