14.1动物这样叫(一)

来源:互联网 发布:用户角色模型 java 编辑:程序博客网 时间:2024/06/11 03:14
/** 程序的版权和版本声明部分* Copyright (c)2014, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:a.cpp* 作    者:孔云* 完成日期:2014年5月29日* 版 本 号: v1.0* 输入描述:略* 问题描述:根据给出的main()函数和运行结果的提示,设计出相关的各个类,           注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。* 输出描述:略*/#include<iostream>#include<string.h>using namespace std;class Animal{public:    virtual void cry()const    {        cout<<"不知哪种动物,让我如何学叫"<<endl;    }};class Mouse :public Animal{protected:    string name;    char sex;public :    Mouse():name(0),sex(0) {}    Mouse(string nam,char s):name(nam),sex(s) {}    void cry()const    {        cout<<"你叫"<<name<<",是一只";        if(sex=='m')        {            cout<<"男";        }        if(sex=='f')        {            cout<<"女";        }        cout<<"老鼠,你的叫声是:吱吱吱吱!"<<endl;    }};class Cat:public Animal{protected:    string name;public :    Cat():name(0) {}    Cat(string nam):name(nam) {}    void cry()const    {        cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl;    }};class Dog:public Animal{protected:    string name;public :    Dog():name(0) {}    Dog(string nam):name(nam) {}    void cry()const    {        cout<<"你叫"<<name<<",是一条狗,你的叫声是:汪汪汪!"<<endl;    }};class Giraffe:public Animal{protected:    string name;    char sex;public :    Giraffe():name(0),sex(0) {}    Giraffe(string nam,char s):name(nam),sex(s) {}    void cry()const    {        cout<<"他叫"<<name<<",是";        if(sex=='m')        {            cout<<"男";        }        if(sex=='f')        {            cout<<"女";        }        cout<<"长颈鹿,我的脖子太长,发不出声音来!"<<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;}在基类虚函数中去掉const运行结果为:

在基类虚函数中加上const 运行结果为:

心得体会:为什么有如此差别?const近似常数之意,用const作为修饰符定义变量是常变量,在这里将其放在虚函数后面其意义何在呢?奋斗

请大神解答、、、、

0 0
原创粉丝点击