Problem Description
动物园(Zoo)有三种动物(Animal):猫(Cat)、狗(Dog)、老虎(Tiger),显示所有动物的信息。
(1)定义5个类,动物园(Zoo)、动物(Animal)、猫(Cat)、狗(Dog)、老虎(Tiger)。
Animal是抽象基类,Cat、Dog是Animal的派生类,Tiger是Cat的派生类。
Animal中有2个数据成员。一个是动物的姓名,另一个是动物的年龄。有1个成员函数,是纯虚函数void Display(),用来显示动物的姓名和年龄。
Cat、Dog和Tiger中有3个成员函数。构造函数、析构函数和重写的函数void Display()。
Zoo中有3个数据成员。分别是:动物园最多能容纳的动物数(max)、动物园当前动物数(num)、指向Animal的数组(Animal** asp)。
Zoo中有4个成员函数。分别是:
构造函数(Zoo(int max)),完成这几个任务,把构造函数参数的值赋给对象的max,动物园当前动物数为0,
new一个Animal的数组并且都初始化为NULL。
析构函数,释放数组空间。
添加动物函数(void Add(Animal* ap)),把ap指向的动物添加到动物园数组中。
显示动物园所有动物信息函数(void ShowAll())。
(2)在main函数中创建1个最大数为5的动物园,再创建2个猫,2个狗,1个老虎,然后把它们添加到动物园,最后显示所有动物的信息。
请完成下面的程序:
//你的代码将被嵌在这里
int main()
{
Zoo z(5);
Animal* pa = new Cat (“AAA”, 3);
z.Add(pa);
//delete pa;
pa = new Dog(“BBB”, 1);
z.Add(pa);
//delete pa;
pa = new Tiger (“CCC”, 2);
z.Add(pa);
//delete pa;
z.ShowAll();
return 0;
}
Sample Output
Cat:AAA,3
Dog:BBB,1
Tiger:CCC,2
#include <iostream>
using namespace std;
#include <string>
class Animal
{
public:
string name;
int age;
virtual void Display() = 0;
};
class Cat :public An