构造函数和析构函数的调用顺序示例
时间: 2024-05-10 09:15:37 浏览: 9
假设有以下代码:
```
#include <iostream>
using namespace std;
class A {
public:
A() { cout << "A constructor" << endl; }
~A() { cout << "A destructor" << endl; }
};
class B {
public:
B() { cout << "B constructor" << endl; }
~B() { cout << "B destructor" << endl; }
};
class C {
public:
C() { cout << "C constructor" << endl; }
~C() { cout << "C destructor" << endl; }
};
class D : public A, public B, public C {
public:
D() { cout << "D constructor" << endl; }
~D() { cout << "D destructor" << endl; }
};
int main() {
D d;
return 0;
}
```
输出结果为:
```
A constructor
B constructor
C constructor
D constructor
D destructor
C destructor
B destructor
A destructor
```
可以看出,构造函数的调用顺序是从基类到派生类,析构函数的调用顺序是从派生类到基类。在多继承中,会按照继承的顺序调用基类的构造函数和析构函数。