C++ 类继承构造函数和析构函数调用顺序示例
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类的析构函数。
结论:
在类继承中,构造函数和析构函数的调用顺序遵循以下规则:
- 父类构造函数先于派生类构造函数被调用。
- 派生类析构函数先于父类析构函数被调用。
- 成员类构造函数在派生类构造函数之前被调用。
- 成员类析构函数在派生类析构函数之后被调用。
原文地址: https://www.cveoy.top/t/topic/jN1F 著作权归作者所有。请勿转载和采集!