第十三周项目1——动物这样叫(3)
2015-06-03 08:21
369 查看
问题及代码;
运行结果:
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:animal.cpp *作 者:赵敏 *完成日期:2015年6月3日 *版 本 号:v1.0 *问题描述: 1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。 2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。 3、每一个Animal的派生类都有一个“名字”数据成员,这个成员设置为基类Animal的成员更好。改造上面的程序,将“名字”成员作为抽象类Animal数据成员被各派生类使用。 */ #include<iostream> #include<string> using namespace std; class Animal { protected: string name; public: virtual void cry()=0; Animal(string nam):name(nam){} }; class Mouse:public Animal { public: Mouse(string nam,char s):Animal(nam),sex(s){} virtual void cry() { cout<<"我叫"<<name<<",是一只" <<((sex=='m')?"":"")<<"老鼠,我的叫声是:吱吱吱!"<<endl; } protected: char sex; } ; 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; }
运行结果:
相关文章推荐
- Python介绍、环境搭建(Eclipse插件)、第一个程序
- 第十周项目 4 点、圆的关系(1)
- 抽象类和接口的详解
- C++之我是二代我继承——教师干部
- Nim教程翻译(一)
- 腾迅股票数据接口 http/javascript .
- 第十三周项目1动物如何叫
- 第13周 补充阅读-链表类1
- word页码页眉目录,excel字段操作
- 第十一周项目教师兼干部类
- 第十三周【项目1-动物这样叫】
- C++刷题——2707: 素数与因子
- 第十三周项目1-1:动物这样叫-虚函数
- 【九章算法免费讲座第一期】转专业找CS工作的“打狗棒法”
- 开源旧事:Linux为什么能成功?
- 第十三周阅读程序三
- MyBatis - 介绍、简单入门程序
- 2-13-1 动物怎么叫
- MyBatis - 介绍、简单入门程序
- 抽象类和接口详解