题目要求:

1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。
2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。
3、每一个Animal的派生类都有一个“名字”数据成员,这个成员设置为基类Animal的成员更好。改造上面的程序,将“名字”成员作为抽象类Animal数据成员被各派生类使用。

#include <iostream>

using namespace std;
class Animal
{
public:
    virtual void cry()
    {
        cout<<"不知哪种动物,让我如何学叫?"<<endl;
    }
};
class mouse :public Animal
{
private:
    string name;
    char sex;
public:
    mouse(string nam, char s):name(nam),sex(s) {}
    virtual void cry()
    {
        cout<<"我叫"<<name<<",是一只"<<((sex=='m')?"公":"母")<<"老鼠,我的叫声是:吱吱吱!"<<endl;
    }
};
class cat : public Animal
{
private :
    string name;
public:
    cat (string nam):name(nam) {}
    virtual void cry()
    {
        cout<<"我叫"<<name<<",是一只"<<"猫,我的叫声是:喵喵喵!"<<endl;
    }
};
class dog:public Animal
{
private :
    string name;
public :
    dog (string nam) : name (nam) {}
    virtual void cry ()
    {
        cout<<"我叫"<<name<<",是一只"<<"狗,我的叫声是:汪汪汪!"<<endl;
    }
};
class dragon: public Animal
{
private :
    string name;
public:
    dragon (string nam) :name(nam) {}
    virtual void cry ()
    {
        cout<<"我叫"<<name<<",是一条"<<"龙,我的叫声是:吼吼吼!"<<endl;
    }
};
int main()
{
    Animal *p;
    p = new Animal();
    p->cry(); //输出: 不知哪种动物,让我如何学叫?
    mouse m1("Jerry",'m');
    p=&m1;
    p->cry(); //输出: 我叫Jerry,是一只男老鼠,我的叫声是:吱吱吱!
    mouse m2("Jemmy",'f');
    p=&m2;
    p->cry(); //输出: 我叫Jemmy,是一只女老鼠,我的叫声是:吱吱吱!
    cat c1("Tom");
    p=&c1;
    p->cry(); //输出: 我叫Tom,是一只猫猫,我的叫声是:喵喵喵!
    dog d1("Droopy");
    p=&d1;
    p->cry(); //输出: 我叫Droopy,是一条狗狗,我的叫声是:汪汪汪!
    dragon d2("long");
    p=&d2;
    p-> cry(); //输出: 我叫long,是一条龙,我的叫声是:吼吼吼

return 0;
}

6,3 动物的叫声 virtual相关推荐

  1. 【Java】设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。

    题目要求:设计一个动物声音"模拟器",希望模拟器可以模拟许多动物的叫声.要求如下: (1)编写抽象类Animal Animal抽象类有2个抽象方法cry()和getAnimaNam ...

  2. 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下:

    设计一个动物声音"模拟器",希望模拟器可以模拟许多动物的叫声.要求如下: (1)编写抽象类Animal Animal抽象类有2个抽象方法cry()和getAnimaName(),即 ...

  3. 日语中动物的叫声是怎样的-狗子怎么叫的

    在日文中动物的一些叫声是怎么样的,用日文怎么形容呢 动物的叫声(动物の鸣き声) 大象(ぞう):パオーンパオーン   paon paon 猴子(さる):ウキーキー   uki kii 熊(くま):ガオー ...

  4. Java练习 | 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声(附代码)

    问题:设计一个动物声音"模拟器",希望模拟器可以模拟许多动物的叫声. 要求如下: 编写抽象类Animal Animal抽象类有2个抽象方法cry()和getAnimaName(), ...

  5. 设计一个动物声音模拟器,希望模拟器可以模拟许多动物的叫声

    设计一个动物声音模拟器,希望模拟器可以模拟许多动物的叫声,要求如下: 1.编写抽象类Animal Aminal抽象类有两个抽象方法cry()和getAnimalName(),即要求各种具体的动物给出自 ...

  6. 动物声音模拟器, 模仿许多动物的叫声

    动物声音模拟器, 模仿许多动物的叫声 package 动物模拟器;public class Simulator {void playSound(Animal animal){System.out.pr ...

  7. Java实验之设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声

    编写抽象类Animal Animal抽象类有两个抽象方法cry()和getAnimalName(),即要求各种具体的动物给出自己的叫声和种类名称 编写模拟器类Simulator 该类有一个playSo ...

  8. java 2 实用教程(第五版)第六章课后编程题:设计一个动物声音模拟器,希望模拟器可以模拟许多的动物的叫声。

    内容:1.编写接口Animal Animal接口有两个抽象方法:cry()和getAnimalName(),即要求实现该接口的各种具体动物类给出自己的叫声和种类名称. 2.编写模拟器类Simulato ...

  9. 设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声

    编写抽象类Animal : Animal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和种类名称. 编写模拟器类Simulator: 该类有一个pla ...

最新文章

  1. 日志分析工具 LogParser
  2. 用WORD2010写博客,并发送至博客园
  3. Windows中使用PowerShell+任务计划程序实现Mysql数据之间的同步
  4. supervisor linux下进程管理工具
  5. pcre安装_Nginx | Nginx的介绍和安装
  6. kaggle数据挖掘竞赛Home Credit Default Risk讲解
  7. 获取文件夹下所有文件名(window+linux)
  8. Math类的常用方法
  9. 虚拟机Windows xp联网
  10. Epicor ERP
  11. 玩转Python第三方库库tqdm
  12. Kafka eagel 网页能打开,但是登录不上
  13. 如何才能将企业现有的组织关系集成到jbpm中?
  14. 计算机如果没有什么 就无法启动,电脑开机没有任何反应
  15. 58同城2014校园招聘笔试题
  16. nginx根据ip限流和突发流量配置解释
  17. java.lang.UnsatisfiedLinkError: dlopen failed: file offset for the library /data/app/com.beiya.litt
  18. 毕业答辩PPT制作和讲述要点
  19. scanner.nextline()中文输入时遇到的问题
  20. VS2013+OBS开发

热门文章

  1. 人生经典定律[收藏] 1
  2. Volatile重排序规则的一些理解
  3. stm32的timer-trgo + DMA + DAC 播放WAV格式音乐
  4. 小区门禁卡可以复制到手机上吗_没有门禁卡怎么开门 门禁卡可以复制到手机里吗...
  5. 【IDEA 教程系列第 6 篇】idea 快速定位到某一行
  6. Fortran写nc文件nbsp;f90nbsp;netcdf
  7. 如何用Python处理自然语言?(Spacy与Word Embedding)
  8. 第一部分 Rx快速入门
  9. 什么是VPS? 它是如何用于自动驾驶的?
  10. eclipse打断点无效,代码进不去断点,断点只是一个圆点,没有对勾的处理方案