- #include
- //不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介
- //绍。定义一个基类 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 << " " <
- }
- 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();
- }