博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十三周项目1-动物这样叫
阅读量:7122 次
发布时间:2019-06-28

本文共 2612 字,大约阅读时间需要 8 分钟。

下面是给出的基类Animal声明和main()函数。

class Animal{public:  virtual void cry()    {      cout<<"不知哪种动物,让我如何学叫?"<
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;}
1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。

/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:Demo.cpp* 完成时间:2015年06月07日* 版本号:v1.0*/#include 
using namespace std;class Animal{public: virtual void cry() { cout<<"不知哪种动物,让我如何学叫?"<
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;}
2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。

/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:Demo.cpp* 完成时间:2015年06月07日* 版本号:v1.0*/#include 
#include
using namespace std;class Animal{public: virtual void cry()=0;};class Mouse:public Animal{public: Mouse(string n,char s):name(n),sex(s){} virtual void cry() { cout<<"我叫"<
<<",是一只"<<((sex=='f')?"女":"男")<<"老鼠,我的叫声是:吱吱吱!"<
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;}
3、每一个Animal的派生类都有一个“名字”数据成员,这个成员设置为基类Animal的成员更好。改造上面的程序,将“名字”成员作为抽象类Animal数据成员被各派生类使用。

/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:Demo.cpp* 完成时间:2015年06月07日* 版本号:v1.0*/#include 
#include
using namespace std;class Animal{public: Animal(string n):name(n){} virtual void cry()=0;protected: string name;};class Mouse:public Animal{public: Mouse(string n,char s):Animal(n),sex(s) {} virtual void cry() { cout<<"我叫"<
<<",是一只"<<((sex=='f')?"女":"男")<<"老鼠,我的叫声是:吱吱吱!"<
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;}

@ Mayuko

转载于:https://www.cnblogs.com/mayuko/p/4567472.html

你可能感兴趣的文章
营销人员为何要读《笑傲江湖》?
查看>>
敏捷开发“松结对编程”系列之十:L型代码结构(技术篇之一)
查看>>
C++与MySQL的冲突
查看>>
C# 文件操作类1
查看>>
[unity3d]鼠标拖动and旋转缩放
查看>>
VS2008 使用小技巧 提高编程效率
查看>>
安装Operations Manager代理程序
查看>>
详解Spring MVC 4之ViewResolver视图解析器
查看>>
解析和生成Excel报表方法汇总::.NET发现之旅(七)
查看>>
活动目录设计中需要遵循的七个原则
查看>>
【STM32 .Net MF开发板学习-04】TinyGUI位图显示
查看>>
NoSQL数据库简介
查看>>
Kevin Systrom和他的Instagram
查看>>
Oracle优化:千万级大表逻辑判断的累赘
查看>>
研讨会记录|与Xamarin工作簿研讨会探索UrhoSharp 3D
查看>>
Java事务处理类(源码)
查看>>
JAVA 设计模式 访问者模式
查看>>
SQL Server清空日志及所有表的数据
查看>>
浅谈ThreadPool 线程池
查看>>
J2EE实现XML文件的读取与导出(源码)
查看>>