• 动物这样叫


     要求1代码:

    /*
    *Copyright (c)2015,烟台大学计算机与控制project学院
    *All rights reserved.
    *文件名:sum123.cpp
    *作    者:林海云
    *完毕日期:2015年6月12日
    *版 本 号:v2.0
    *
    *问题描写叙述:依据给出的main()函数和执行结果的提示,设计出相关的各个类,注意观察执行结果,提取出每一个类中须要的数据成员,并匹配上须要的成员函数。
    *程序输入:无
    *程序输出:输出要求的执行结果
    */
    #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 Giraffe : public Animal
    {
    private:
        string name;
        char sex;
    public:
        Giraffe(string nam,char s):name(nam), sex(s) {}
        virtual void cry()
        {
            cout<<"我叫"<<name<<",是"<<((sex=='m')?"男":"女")<<"长颈鹿,我的脖子太长,发不出声音来!

    "<<endl; } }; int main( ) { Animal *p; p = new Animal(); p->cry(); Mouse m1("Jerry",'m'); p=&m1; p->cry(); Mouse m2("Jemmy",'f'); p=&m2; p->cry(); Cat c1("Tom"); p=&c1; p->cry(); Dog d1("Droopy"); p=&d1; p->cry(); Giraffe g1("Gill",'m'); p=&g1; p->cry(); return 0; }


    执行结果:



    要求二代码:

    /*
    *Copyright (c)2015,烟台大学计算机与控制project学院
    *All rights reserved.
    *文件名:sum123.cpp
    *作    者:林海云
    *完毕日期:2015年6月12日
    *版 本 号:v2.0
    *
    *问题描写叙述:显然,Animal设计为抽象类更合适,Animal不须要可以实例化,是专门作基类使用的。
               改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。
    *程序输入:无
    *程序输出:输出要求的执行结果
    */
    #include <iostream>
    #include <string>
    using namespace std;
    class Animal
    {
    public:
        virtual void cry() = 0;
    };
    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 Giraffe : public Animal
    {
    private:
        string name;
        char sex;
    public:
        Giraffe(string nam,char s):name(nam), sex(s) {}
        virtual void cry()
        {
            cout<<"我叫"<<name<<"。是"<<((sex=='m')?"公":"母")<<"长颈鹿。我的脖子太长,发不出声音来!"<<endl;
        }
    };
    int main( )
    {
        Animal *p;
        Mouse m1("Jerry",'m');
        p=&m1;
        p->cry();
        Mouse m2("Jemmy",'f');
        p=&m2;
        p->cry();
        Cat c1("Tom");
        p=&c1;
        p->cry();
        Dog d1("Droopy");
        p=&d1;
        p->cry();
        Giraffe g1("Gill",'m');
        p=&g1;
        p->cry();
        return 0;
    }
    

    执行结果:


    要求三代码:

    /*
    *Copyright (c)2015,烟台大学计算机与控制project学院
    *All rights reserved.
    *文件名:sum123.cpp
    *作    者:林海云
    *完毕日期:2015年6月12日
    *版 本 号:v2.0
    *
    *问题描写叙述:每个Animal的派生类都有一个“名字”数据成员。这一共同拥有的成员全然能够由基类提供改造上面的程序,将这一数据成员作为抽象类Animal数据成员被各派生类使用。
    *程序输入:无
    *程序输出:输出要求的执行结果
    */
    #include <iostream>
    #include <cstring>
    using namespace std;
    class Animal
    {
        protected:
        string name;
    public:
        Animal(string nam):name(nam){}
        virtual void cry() = 0;
    };
    class Mouse : public Animal
    {
    private:
        char sex;
    public:
        Mouse(string nam, char s):Animal(nam),sex(s) {}
        virtual void cry()
        {
            cout<<"我叫"<<name<<",是一仅仅"<<((sex=='m')?

    "公":"母")<<"老鼠,我的叫声是:吱吱吱。"<<endl; } }; class Cat : public Animal { public: Cat(string nam):Animal(nam) {} virtual void cry() { cout<<"我叫"<<name<<"。是一仅仅猫,我的叫声是:喵喵喵。"<<endl; } }; class Dog : public Animal { public: Dog(string nam):Animal(nam) {} virtual void cry() { cout<<"我叫"<<name<<"。是一条狗,我的叫声是:汪汪汪!

    "<<endl; } }; class Giraffe : public Animal { private: char sex; public: Giraffe(string nam,char s):Animal(nam), sex(s) {} virtual void cry() { cout<<"我叫"<<name<<",是"<<((sex=='m')?"公":"母")<<"长颈鹿。我的脖子太长,发不出声音来!"<<endl; } }; int main( ) { Animal *p; Mouse m1("Jerry",'m'); p=&m1; p->cry(); Mouse m2("Jemmy",'f'); p=&m2; p->cry(); Cat c1("Tom"); p=&c1; p->cry(); Dog d1("Droopy"); p=&d1; p->cry(); Giraffe g1("Gill",'m'); p=&g1; p->cry(); return 0; }


    执行结果:


  • 相关阅读:
    Http和Socket连接区别
    解决TCP网络传输“粘包”问题
    c# 获取MAC IP TCP列表
    《你不常用的c#之四》:Array的小抽屉ArraySegment
    《你不常用的c#之三》:Action 之怪状
    《你不常用的c#之二》:略谈GCHandle
    c#中var关键字用法
    Combotree--别样的构建层级json字符串
    一周代码秀之[11.18~11.24 linq2xml面向对象]
    这个季节的这些时候
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7213801.html
Copyright © 2020-2023  润新知