C++ 类继承构造函数和析构函数调用顺序示例

本示例演示了C++中类继承时构造函数和析构函数的调用顺序。通过创建派生类D对象,验证了父类B和成员类C的构造函数和析构函数的调用顺序。

#include <iostream>
using namespace std;

class B {
public:
    B() { cout << 'B constructor called.' << endl; }
    ~B() { cout << 'B destructor called.' << endl; }
};

class C {
public:
    C() { cout << 'C constructor called.' << endl; }
    ~C() { cout << 'C destructor called.' << endl; }
};

class D : public B {
public:
    D() { cout << 'D constructor called.' << endl; }
    ~D() { cout << 'D destructor called.' << endl; }
private:
    C c1;
    C c2;
};

int main() {
    D d;
    return 0;
}

输出结果为:

B constructor called.
C constructor called.
C constructor called.
D constructor called.
D destructor called.
C destructor called.
C destructor called.
B destructor called.

分析:

  • 创建D类对象时,先调用B类的构造函数,再调用C类的构造函数,最后调用D类的构造函数。
  • 销毁D类对象时,先调用D类的析构函数,再调用C类的析构函数,最后调用B类的析构函数。

结论:

在类继承中,构造函数和析构函数的调用顺序遵循以下规则:

  1. 父类构造函数先于派生类构造函数被调用。
  2. 派生类析构函数先于父类析构函数被调用。
  3. 成员类构造函数在派生类构造函数之前被调用。
  4. 成员类析构函数在派生类析构函数之后被调用。

原文地址: https://www.cveoy.top/t/topic/jN1F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录