cpp
复制代码
#include <iostream>
//不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介
//绍。定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为
using namespace std;
class Animal
{
private:
string name;
int weight;
string color;
public:
Animal(){}
Animal(string name,int w,string c):name(name),weight(w),color(c)
{}
virtual void perform()
{
cout << "动物讲解开始......" << endl ;
}
void show()
{
cout << name << " " << weight << " " << color << " " <<endl;
}
void over()
{
cout << "动物讲解结束......" << endl ;
}
};
class Lion :public Animal
{
private:
string sound;
int age;
public:
Lion(){}
Lion(string sound,int age,string name,int weight,string color):Animal(name,weight,color),sound(sound),age(age)
{}
void perform()
{
cout << "狮子喷火......." << endl;
}
void show()
{
cout << sound << " " << age << " " ;
}
};
class Elephant :public Animal
{
private:
string nose;
int high;
public:
Elephant(){}
Elephant(string nose,int h,string name,int weight, string color):Animal(name,weight,color),nose(nose),high(h)
{}
void perform()
{
cout << "大象跳圈圈......." << endl;
}
void show()
{
cout << nose << " " << high << " ";
}
};
class Monkey :public Animal
{
private:
string breed;
int birth;
public:
Monkey(){}
Monkey(string breed,int birth,string name,int weight, string color):Animal(name,weight,color),breed(breed),birth(birth)
{}
void perform()
{
cout << "猴子蹦极......." << endl;
}
void show()
{
cout << breed << " "<< birth << " " ;
}
};
int main()
{ Animal f;
f.perform();
Animal *p;
Lion A("怒吼",5,"狮子",300,"棕色");
Elephant B("大长鼻子",20,"大象",500,"灰色");
Monkey C("金丝猴",2023,"猴子",36,"金色");
cout << "________________________" << endl;
cout << endl;
A.show();
A.Animal::show();
p=&A;
p->perform();
cout << endl;
cout << endl;
B.show();
B.Animal::show();
p=&B;
p->perform();
cout << endl;
cout << endl;
C.show();
C.Animal::show();
p=&C;
p->perform();
cout << endl;
cout << "________________________" << endl;
f.over();
}