第二学期第14周项目1--动物这样叫(要求2.3)
2014-05-28 17:13
381 查看
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 沈远宏 * 完成日期:2014 年 05月27日 * 版 本 号:v1.0 * 问题描述:下面是给出的基类Animal声明和main()函数。 1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。 2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。 3、每一个Animal的派生类都有一个“名字”数据成员,这个成员设置为基类Animal的成员更好。改造上面的程序,将“名字”成员作为抽象类Animal数据成员被各派生类使用。 * 输出:程序的运行结果将是: 1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。 2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。 3、每一个Animal的派生类都有一个“名字”数据成员,这个成员设置为基类Animal的成员更好。改造上面的程序,将“名字”成员作为抽象类Animal数据成员被各派生类使用。 */ #include <iostream> #include <cstring> using namespace std; class Animal { public: virtual void cry() =0; Animal(string n):name(n){} protected: string name; }; class Mouse: public Animal { protected: char sex; public: Mouse(string n,char s):Animal(n),sex(s){} virtual void cry() { cout<<name<<"的叫声是吱吱吱~~~"<<endl; } }; class Cat: public Animal { public: Cat(string n):Animal(n){} virtual void cry() { cout<<name<<"的叫声喵喵喵~~~"<<endl; } }; class Dog: public Animal { public: Dog(string n):Animal(n){} virtual void cry() { cout<<name<<"的叫声汪汪汪~~~"<<endl; } }; class Giraffe: public Animal { protected: char sex; public: Giraffe(string n,char s):Animal(n),sex(s){} virtual void cry() { cout<<name<<":唔~我不叫~~~"<<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; }
运行结果:
心得体会:
虚函数跟抽象类的作用有点模糊~~
相关文章推荐
- 第二学期第14周项目1--动物这样叫(要求1)
- 2014-第14周-项目一-动物这样叫
- 第13周项目1—动物这样叫2.3
- 第14周项目1-动物这样叫
- 第二学期第14周项目2--形状类族的中的纯虚函数
- 第十三周实践项目2.3-动物这样叫
- 第14周 项目一 动物这样叫
- 2013级C++第14周(春)项目——多态性、虚函数和抽象类 【项目1-动物这样叫】
- 第十三周项目2.3—动物这样叫
- 第十三周项目 动物这样叫 2.3
- 第14周 项目1.2 动物这样叫
- 第14周-项目一-动物这样叫
- 第十三周项目2.3—动物这样叫
- 第二学期第二周项目四--玩日期
- **第二学期第五周项目2--分数类的雏形
- 第二学期第五周项目1--三角形类的构造函数3
- 第二学期第五周项目4--指向学生类的指针
- 第二学期第五周项目3--对象数组操作长方柱类
- 第二学期第四周项目1--三角形类1
- 第二学期第六周项目4--静态成员作用