声明一个基类 BaseClass,有整型成员变量 Number,构造其派生类 DerivedClass,观察构造函数和析构函数的执行情况。
时间: 2024-05-05 10:21:05 浏览: 130
派生类构造函数和析构函数的执行顺序
以下是示例代码:
```
#include <iostream>
using namespace std;
class BaseClass {
public:
int Number;
BaseClass() {
cout << "BaseClass constructor called." << endl;
Number = 0;
}
~BaseClass() {
cout << "BaseClass destructor called." << endl;
}
};
class DerivedClass : public BaseClass {
public:
DerivedClass() {
cout << "DerivedClass constructor called." << endl;
}
~DerivedClass() {
cout << "DerivedClass destructor called." << endl;
}
};
int main() {
DerivedClass obj;
return 0;
}
```
在上述代码中,构造函数和析构函数的执行情况如下:
1. 创建 DerivedClass 对象时,首先会调用 BaseClass 的构造函数,输出 "BaseClass constructor called.",设置 Number 的值为 0。
2. 然后调用 DerivedClass 的构造函数,输出 "DerivedClass constructor called."。
3. 当程序结束时,会先调用 DerivedClass 的析构函数,输出 "DerivedClass destructor called."。
4. 接着调用 BaseClass 的析构函数,输出 "BaseClass destructor called."。
因此,构造函数和析构函数的执行顺序是根据继承关系从父类到子类,析构函数的执行顺序则与构造函数相反。
阅读全文