定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,定义该派生类的对象,观察构造函数和析构函数的执行情况。
时间: 2024-12-11 10:25:16 浏览: 24
当我们定义一个基类`BaseClass`,其中包含一个整型成员变量`Number`,例如:
```cpp
class BaseClass {
private:
int number;
public:
// 构造函数
BaseClass(int num) : number(num) {
std::cout << "BaseClass constructor called with number: " << num << std::endl;
}
~BaseClass() { // 析构函数
std::cout << "BaseClass destructor called" << std::endl;
}
// 其他方法...
};
```
然后我们创建一个派生类`DerivedClass`,继承自`BaseClass`:
```cpp
class DerivedClass : public BaseClass {
public:
DerivedClass(int num) : BaseClass(num) {
std::cout << "DerivedClass constructor called, calling BaseClass constructor" << std::endl;
}
// 派生类可能有自己的析构函数,这里省略
};
```
当创建`DerivedClass`的对象时,会发生以下事情:
1. **构造函数**:首先会调用`DerivedClass`的构造函数,它会先调用`BaseClass`的构造函数,并传入`num`的值,打印出基类和派生类各自构造函数的信息。
```cpp
DerivedClass obj(10); // 将会输出:
// BaseClass constructor called with number: 10
// DerivedClass constructor called, calling BaseClass constructor
```
2. **使用对象**:在这个阶段,你可以像平常一样使用对象,调用它的方法等。
3. **析构函数**:当对象生命周期结束,不再有任何引用指向它时,会自动调用`~DerivedClass()`和`~BaseClass()`。它们分别负责清理`DerivedClass`和`BaseClass`内部资源,此时也会打印相应的信息。
```cpp
delete &obj; // 或者对象所在的内存区域释放(取决于具体的内存管理)
// Output:
// BaseClass destructor called
// DerivedClass destructor called
```
阅读全文