设计一个简易魔兽世界游戏框架,定义表示人形类的抽象类 Humanoid 及其派生类,并实现多态操作,要求如下: (1)定义抽象类 Humanoid,添加公有成员函数 voidSayHello(),并将其定义为纯虚函数; (2)从 Humanoid 类公有派生矮人类 Dwarf,覆盖基类纯虚的数 void Say Hello(),实现输出 “"Hi, I am a dwarf"功能; (3)从 Humanoid 类公有派生精灵类 EIf覆盖基类纯虚的数 void Say Flello(),实现输出“Hi,I am an elf"功能. (4)从 Humanoid 类公有派生兽人类Orc,覆盖基类纯虚函数void Say Hello(),实现输出“Hi, I am an orc,"功能。 在main 主函数中,首先根据输入的整数创建相应大小的Humanoid 类类型指针数组,再根据输入的宇符动态创建相应派生类对象,并将其地址赋子基类类型指针数组元素。揄入信息格式如下: 3//要求创建 Humanoid 类对象指针数组的元素个数 D//根据字符D动态创建 Dwarf 类对象 E//根据字符E动态创建 EIf 类对象 O//根据字符O动态创建 Orc 类对象 通过 Humanoid 类对象指针数组的每个元素调用 SayHello 成员函数,实现多态。 输入描述: 对象指针数组长度 动态创建对象类型标记字符 输出描述: 依次输出 Humanoid 类对象指针数组的每一个元素调用 SayHello 函数的结果。
时间: 2024-03-26 22:35:20 浏览: 173
以下是简易魔兽世界游戏框架的代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义表示人形类的抽象类 Humanoid
class Humanoid {
public:
virtual void SayHello() = 0; // 纯虚函数
};
// 从 Humanoid 类公有派生矮人类 Dwarf
class Dwarf : public Humanoid {
public:
void SayHello() { // 覆盖基类纯虚函数
cout << "Hi, I am a dwarf" << endl;
}
};
// 从 Humanoid 类公有派生精灵类 Elf
class Elf : public Humanoid {
public:
void SayHello() { // 覆盖基类纯虚函数
cout << "Hi, I am an elf" << endl;
}
};
// 从 Humanoid 类公有派生兽人类 Orc
class Orc : public Humanoid {
public:
void SayHello() { // 覆盖基类纯虚函数
cout << "Hi, I am an orc" << endl;
}
};
int main() {
int n;
cin >> n; // 对象指针数组长度
vector<Humanoid*> arr(n); // 创建相应大小的 Humanoid 类类型指针数组
// 根据输入的字符动态创建相应派生类对象,并将其地址赋给基类类型指针数组元素
char ch;
for (int i = 0; i < n; i++) {
cin >> ch;
if (ch == 'D') {
arr[i] = new Dwarf();
} else if (ch == 'E') {
arr[i] = new Elf();
} else if (ch == 'O') {
arr[i] = new Orc();
}
}
// 通过基类类型指针数组的每个元素调用 SayHello 成员函数,实现多态
for (int i = 0; i < n; i++) {
arr[i]->SayHello();
}
// 释放动态分配的内存
for (int i = 0; i < n; i++) {
delete arr[i];
}
return 0;
}
```
输入示例:
```
3
D
E
O
```
输出示例:
```
Hi, I am a dwarf
Hi, I am an elf
Hi, I am an orc
```
阅读全文