构造函数和析构函数的调用顺序示例
时间: 2024-05-10 10:15:38 浏览: 112
C++构造函数和析构函数顺序
假设我们有以下三个类:A、B和C。B是A的子类,C是B的子类。它们的构造函数和析构函数如下:
```C++
class A {
public:
A() {
cout << "Constructing A" << endl;
}
~A() {
cout << "Destructing A" << endl;
}
};
class B : public A {
public:
B() {
cout << "Constructing B" << endl;
}
~B() {
cout << "Destructing B" << endl;
}
};
class C : public B {
public:
C() {
cout << "Constructing C" << endl;
}
~C() {
cout << "Destructing C" << endl;
}
};
```
当我们创建一个C对象时,构造函数和析构函数的调用顺序如下:
```C++
int main() {
C c;
return 0;
}
// 输出:
// Constructing A
// Constructing B
// Constructing C
// Destructing C
// Destructing B
// Destructing A
```
可以看出,构造函数的调用顺序是从基类到派生类,而析构函数的调用顺序则相反,是从派生类到基类。在C++中,这种顺序是固定的,无论是基类还是派生类都不能改变。
阅读全文