c++基类和派生类构造和析构顺序

27 阅读1分钟

1 代码

#include <iostream>
using namespace std;

// 基类
class Base {
public:
    Base() { cout << "Base 构造" << endl; }
    ~Base() { cout << "Base 析构" << endl; }
};

// 派生类(继承自 Base)
class Derived : public Base {
public:
    Derived() { cout << "Derived 构造" << endl; }
    ~Derived() { cout << "Derived 析构" << endl; }
};

// 派生类的派生类(继承自 Derived)
class MostDerived : public Derived {
public:
    MostDerived() { cout << "MostDerived 构造" << endl; }
    ~MostDerived() { cout << "MostDerived 析构" << endl; }
};

int main()
{
    cout << "创建对象:" << endl;
    MostDerived obj;
    cout << "销毁对象(作用域结束):" << endl;
    return 0;
}

2 运行结果

创建对象:
Base 构造
Derived 构造
MostDerived 构造
销毁对象(作用域结束):
MostDerived 析构
Derived 析构
Base 析构

3 结论

构造顺序(从基类到最派生类),析构顺序(与构造相反,从最派生类到基类)