1.定义一个类Animal,该类中包含数据成员name用来记录动物的名字,并有一个虚函数show用于显示动物的种类。 2.定义两个类Cat和Dog,都继承自Animal;包含show函数,不但要显示动物的种类(类型分别 为 cat,dog),还要显示动物的名字。 3.定义一个Tiger类,继承自Cat,包含show函数,显示动物的种类(类型为tiger)和名字。 编写主函数,在主函数中定义一个基类指针,并用这个指针指向派生类的对象,通过基类指针调用派生类的show函数,实现运行时的多态
时间: 2024-02-19 13:58:37 浏览: 86
下面是该题目的代码实现:
```c++
#include <iostream>
using namespace std;
// 基类 Animal
class Animal {
public:
string name; // 记录动物的名字
virtual void show() { // 虚函数显示动物的种类
cout << "Animal" << endl;
}
};
// 派生类 Cat
class Cat : public Animal {
public:
void show() override { // 重写虚函数显示动物种类和名字
cout << "Cat: " << name << endl;
}
};
// 派生类 Dog
class Dog : public Animal {
public:
void show() override { // 重写虚函数显示动物种类和名字
cout << "Dog: " << name << endl;
}
};
// 派生类 Tiger
class Tiger : public Cat {
public:
void show() override { // 重写虚函数显示动物种类和名字
cout << "Tiger: " << name << endl;
}
};
int main() {
Animal* ptr; // 定义基类指针
Cat c; // 定义 Cat 类对象
Dog d; // 定义 Dog 类对象
Tiger t; // 定义 Tiger 类对象
ptr = &c; // 将基类指针指向 Cat 类对象
ptr->name = "Tom"; // 设置动物的名字
ptr->show(); // 调用 Cat 类的 show 函数
ptr = &d; // 将基类指针指向 Dog 类对象
ptr->name = "Jerry"; // 设置动物的名字
ptr->show(); // 调用 Dog 类的 show 函数
ptr = &t; // 将基类指针指向 Tiger 类对象
ptr->name = "Tony"; // 设置动物的名字
ptr->show(); // 调用 Tiger 类的 show 函数
return 0;
}
```
输出结果为:
```
Cat: Tom
Dog: Jerry
Tiger: Tony
```
阅读全文