实验9:Problem B: 动物类-抽象类

最坑的一点:狗的量词是条!条!条!

HomeWeb BoardProblemSetStandingStatusStatistics
 
Problem B: 动物类-抽象类

Problem B: 动物类-抽象类

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 1567   Solved: 774
[ Submit][ Status][ Web Board]

Description

每种动物都有自己的叫声,如狗的叫声是"汪汪汪",猫的叫声是"喵喵喵",老鼠的叫声是"吱吱吱"。
构造类Animal,Dog,Cat,Mouse,他们都有成员数据name和sex,表示名字和性别。一个成员函数cry(),输出他们的叫声,在main函数中采用多态性调用他们。
 

 

Input

动物的姓名和性别

 

Output

动物的信息

 

Sample Input

Jerry m Jemmy f Tom m Droopy m

Sample Output

我叫Jerry,是一只男老鼠,我的叫声是:吱吱吱! 我叫Jemmy,是一只女老鼠,我的叫声是:吱吱吱! 我叫Tom,是一只男猫,我的叫声是:喵喵喵! 我叫Droopy,是一条男狗,我的叫声是:汪汪汪!

HINT

Animal应当为抽象类。

 

 

Append Code

[ Submit][ Status][ Web Board]
#include<iostream>
using namespace std;
class Animal{
public:
    string name;
    char sex;
    ///Animal(string n,char m){name=n;sex=m;if(sex=='m') cout<<"我叫"<<name<<",是一只男"; else cout<<"我叫"<<name<<",是一只女";}
    virtual void cry()=0;
};
class Mouse:public Animal{
public:
    string name;
    char sex;
    Mouse(string n,char m){name=n;sex=m;if(sex=='m') cout<<"我叫"<<name<<",是一只男"; else cout<<"我叫"<<name<<",是一只女";}
    void cry(){cout<<"老鼠,我的叫声是:吱吱吱!"<<endl;}
};
class Dog:public Animal{
public:
    string name;
    char sex;
    Dog(string n,char m){name=n;sex=m;if(sex=='m') cout<<"我叫"<<name<<",是一条男"; else cout<<"我叫"<<name<<",是一条女";}
    void cry(){cout<<"狗,我的叫声是:汪汪汪!"<<endl;}
};
class Cat:public Animal{
public:
    string name;
    char sex;
    Cat(string n,char m){name=n;sex=m;if(sex=='m') cout<<"我叫"<<name<<",是一只男"; else cout<<"我叫"<<name<<",是一只女";}
    void cry(){cout<<"猫,我的叫声是:喵喵喵!"<<endl;}
};
int main( )
{
    string nam;
    char s;
    cin>>nam>>s;
    Animal *p;
    Mouse m1(nam, s);
    p=&m1;
    p->cry();
    cin>>nam>>s;
    Mouse m2(nam, s);
    p=&m2;
    p->cry();
    cin>>nam>>s;
    Cat c1(nam, s);
    p=&c1;
    p->cry();
    cin>>nam>>s;
    Dog d1(nam, s);
    p=&d1;
    p->cry();
    return 0;
}

 

转载于:https://www.cnblogs.com/auto1945837845/p/5447284.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值