定义一个基类BaseCkass,有整型成员变量Number, 构造其派生类DerivedClass, 观察构造函数和析构函数的执行情况。用C++
时间: 2024-12-20 18:21:55 浏览: 12
C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar
4星 · 用户满意度95%
在C++中,当你定义一个基类`BaseClass`,包含一个整型成员变量`Number`,如下所示:
```cpp
class BaseClass {
private:
int Number;
public:
BaseClass(int initNum) : Number(initNum) {} // 构造函数
~BaseClass() { // 析构函数
std::cout << "BaseClass destructor called with Number: " << Number << '\n';
}
};
```
然后创建一个派生类`DerivedClass`,它从`BaseClass`派生:
```cpp
class DerivedClass : public BaseClass {
public:
DerivedClass(int derivedNum) : BaseClass(derivedNum) {} // 初始化父类成员
~DerivedClass() override { // 覆盖析构函数以添加特定操作
std::cout << "DerivedClass destructor called.\n";
}
};
```
当创建`DerivedClass`对象时,会首先调用基类的构造函数`BaseClass(int initNum)`,并将传入的`derivedNum`赋值给`Number`。接着,派生类的构造函数`DerivedClass(int derivedNum)`会被调用,初始化其特定的数据。
当`DerivedClass`对象结束生命周期时,首先是`DerivedClass`的析构函数被执行,打印出特定的信息,之后才是基类`BaseClass`的析构函数。这是因为派生类的析构函数是在基类析构函数之前调用的,这是为了确保派生类对资源的清理(如果有的话)先于基础部分。
示例:
```cpp
int main() {
DerivedClass obj(42);
// ...
return 0;
}
```
运行此程序后,输出将是:
```
DerivedClass constructor called.
BaseClass constructor called with Number: 42
DerivedClass destructor called.
BaseClass destructor called with Number: 42
```
阅读全文