地13周 项目1 动物这样叫
2015-06-03 09:18
281 查看
问题及代码:
运行结果:
/*。 *Copyright(c)2014,烟台大学计算机学院 *All right reserved, *文件名:test.cpp *作者:liu_feng_zi_ *完成日期:2015年6月3日 *版本号:v1.0 *问题描述: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 n,char s):name(n),sex(s) {} void cry() { cout<<"我叫"<<name<<",我是一只"<<((sex=='m')?"男老鼠":"女老鼠,"); cout<<"我的叫声是:哈哈哈!"<<endl; } }; class Cat:public Animal { private: string name; public: Cat(string n):name(n) {} void cry() { cout<<"我叫"<<name<<",我的叫声是:嘿嘿嘿!"<<endl; } }; class Dog:public Animal { private: string name; public: Dog(string n):name(n) {} void cry() { cout<<"我叫"<<name<<",我的叫声是:呵呵呵!"<<endl; } }; class Giraffe:public Animal { private: string name; char sex; public: Giraffe(string n,char s):name(n),sex(s) {} void cry() { cout<<"我叫"<<name<<",我是一只"<<((sex=='m')?"男长颈鹿":"女长颈鹿,"); 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; }
运行结果:
相关文章推荐
- 第13周 项目2 形状类族的中的纯虚函数
- HDU 母牛的故事
- endl与\n的区别
- 对于分割窗口的视图无法响应鼠标滚轮的解决方法
- C++之我是二代我继承——圆与线
- samba文件无法复制到电脑本地的问题
- 修改UINavigationController的UINavigationItem的颜色
- 记一次云计算测试实验-openstack-icehouse-安装keystone
- powerDesigner生成的oracle 建表sql hibernate 无法映射
- set集合容器
- 腾讯股票数据接口 http/javascript
- GitHub上史上最全的Android开源项目分类汇总
- 大话重构 之 消除巨无霸类
- 类名不同,结构相同的两个类相互转换
- LinQ to SQL
- ifconfig命令无法找到,提示bash: ifconfig: command not found
- 只顾自己说,不顾他人感受
- 2-13-3 立体类族共有的抽象类
- 第十三周项目3立体类族中共有的抽象类
- 自定义日历控件