首页 分享 C++动物园(虚函数与多态)

C++动物园(虚函数与多态)

来源:萌宠菠菠乐园 时间:2024-11-22 06:46

题目描述
某个动物园内,有老虎、狗、鸭子和猪等动物,动物园的管理员为每个动物都起了一个名字,并且每个动物都有年龄、体重等信息。每到喂食的时候,不同的动物都会叫唤(speak)。
每种动物的叫唤声均不同,老虎的叫唤声是“AOOO”,狗的叫唤声是“WangWang”,鸭子的叫唤声是“GAGA”,猪的叫唤声是“HENGHENG”。

定义一个Animal的基类,Animal类有函数Speak(),并派生老虎、狗、鸭子和猪类,其能发出不同的叫唤声(用文本信息输出叫声)。

编写程序,输入动物名称、名字、年龄,让动物园内的各种动物叫唤。

要求:只使用一个基类指针,指向生成的对象并调用方法。

输入
测试案例的个数

第一种动物的名称 名字 年龄

第二种动物的名称 名字 年龄

输出
输出相应动物的信息

如果不存在该种动物,输出There is no 动物名称 in our Zoo. ,具体输出参考样例输出

样例输入
4
Tiger Jumpjump 10
Pig Piglet 4
Rabbit labi 3
Duck tanglaoya 8
样例输出
Hello,I am Jumpjump,AOOO.
Hello,I am Piglet,HENGHENG.
There is no Rabbit in our Zoo.
Hello,I am tanglaoya,GAGA.

#include<iostream> #include <cstring> using namespace std; class Animal{protected:char *name;int age;public:Animal(char* n,int a){name=new char[strlen(n)+1];strcpy(name,n);age=a;}virtual void speak(){};virtual ~Animal(){if(name!=NULL)delete name;} }; class Tiger:public Animal{public:Tiger(char *n,int a):Animal(n,a){}virtual void speak(){cout<<"Hello,I am "<<name<<",AOOO."<<endl;} }; class Dog:public Animal{public:Dog(char *n,int a):Animal(n,a){}virtual void speak(){cout<<"Hello,I am "<<name<<",WangWang."<<endl;} }; class Duck:public Animal{public:Duck(char *n,int a):Animal(n,a){}virtual void speak(){cout<<"Hello,I am "<<name<<",GAGA."<<endl;} }; class Pig:public Animal{public:Pig(char *n,int a):Animal(n,a){}virtual void speak(){cout<<"Hello,I am "<<name<<",HENGHENG."<<endl;} }; int main(){char animal[20],name[20];int age,t,i;Animal *a1;cin>>t;while(t--){i=0;cin>>animal>>name>>age;if(!strcmp(animal,"Tiger")){i=1;Tiger t1(name,age);a1=&t1;a1->speak();}if(!strcmp(animal,"Dog")){i=1;Dog d1(name,age);a1=&d1;a1->speak();}if(!strcmp(animal,"Duck")){i=1;Duck d1(name,age);a1=&d1;a1->speak();}if(!strcmp(animal,"Pig")){i=1;Pig p1(name,age);a1=&p1;a1->speak();}if(i==0){cout<<"There is no "<<animal<<" in our Zoo."<<endl;}}return 0; } 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586

比较字符串的函数strcmp

加前缀#include <cstring>,

strcmp(str1,str2); 1

比较字符串str1和str2的大小,如果str1小于str2,返回值就<0,反之如果str1大于str2,返回值就>0,如果str1等于str2,返回值就=0.
如果和某一个具体的字符串比较需要加双引号,如本题的

strcmp(animal,"Tiger") 1

在这里插入图片描述

相关知识

C++动物运动会源代码资源
宠物的生长(虚函数和多态)
C++ 宠物的生长(虚函数和多态)
java特性封装、抽象、继承、多态理论
宠物的生长(多态)
C++课程作业之 宠物类的创建
C++赋值运算符重载函数(operator=)
C# GDI+写的桌面宠物
C++程序设计(上)练习
添加主人类,通过多态实现给宠物喂食。

网址: C++动物园(虚函数与多态) https://www.mcbbbk.com/newsview627787.html

所属分类:萌宠日常
上一篇: 宠物店医疗纠纷找哪个部门
下一篇: 农业农村部办公厅关于进一步推进无

推荐分享