编写程序声明一个基类 BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用 cout 输出提示信息,观察构造函数和析构函数的执行情况。根据提示,在右侧编辑器补充代码,并输出正确的值。解题思路
时间: 2024-11-15 13:26:25 浏览: 39
虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
首先,我们需要在C++中创建一个基类`BaseClass`,并声明一个虚函数`printMessage`,用于在构造函数和析构函数中打印消息。然后,我们会创建一个派生类`DerivedClass`,并在构造和析构函数中分别重写`printMessage`,加入自己的信息。
```cpp
#include <iostream>
// 基类 BaseClass
class BaseClass {
public:
// 构造函数
BaseClass(const char* message)
: printMessage(message) {
std::cout << "构造函数: " << printMessage << std::endl;
}
// 虚拟析构函数
virtual ~BaseClass() {
std::cout << "析构函数: " << printMessage << std::endl;
}
protected:
const char* printMessage;
};
// 派生类 DerivedClass
class DerivedClass : public BaseClass {
public:
// 构造函数,覆盖基类的构造函数
DerivedClass(const char* baseMsg, const char* derivedMsg)
: BaseClass(baseMsg),
derivedMessage(derivedMsg) {
std::cout << "构造函数 (DerivedClass): " << derivedMessage << std::endl;
}
// 析构函数,同样需要覆盖基类的析构函数
~DerivedClass() override {
std::cout << "析构函数 (DerivedClass): " << derivedMessage << std::endl;
}
private:
const char* derivedMessage;
};
int main() {
// 创建 DerivedClass 对象并传递基类和派生类的信息
DerivedClass d("这是基类的消息", "这是派生类的独特消息");
return 0;
}
```
在这个例子中,当你运行程序时,你会看到以下输出:
1. `构造函数: 这是基类的消息`
2. `构造函数 (DerivedClass): 这是派生类的独特消息`
3. 当`d`对象被销毁时,会依次执行:
- `析构函数 (DerivedClass): 这是派生类的独特消息`
- `析构函数: 这是基类的消息`
这就是多态和继承在构造函数和析构函数上如何协同工作的一个简单示例。你可以根据此代码理解派生类如何覆盖基类的行为,并观察到它们在特定生命周期阶段的操作。
阅读全文