第十三周项目一(二)
来源:互联网 发布:手机淘宝详情图片尺寸 编辑:程序博客网 时间:2024/06/13 11:43
2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。
#include <iostream>using namespace std;class Animal{public: virtual void cry()=0;};class Mouse: public Animal{public: Mouse(string nam,char s):name(nam),sex(s){} virtual void cry();protected: string name; char sex;};void Mouse::cry(){ cout<<"我叫"<<name<<","; if(sex=='m') cout<<"我是一只男老鼠,"; else cout<<"我是一只女老鼠,"; cout<<"我的叫声是:吱吱吱!"<<endl;}class Cat: public Animal{public: Cat(string nam):name(nam){}; virtual void cry();protected: string name;};void Cat::cry(){ cout<<"我叫:"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl;}class Dog: public Animal{public: Dog(string nam):name(nam){}; virtual void cry();protected: string name;};void Dog::cry(){ cout<<"我叫:"<<name<<",是一只狗,我的叫声是:汪汪汪!"<<endl;}class Giraffe :public Animal{public: Giraffe(string nam,char s):name(nam),sex(s){}; virtual void cry();protected: string name; char sex;};void Giraffe::cry(){ cout<<"我叫:"<<name<<",是"<<((sex=='m')?"男":"女")<<"长颈鹿,我的脖子太长,发不出声音来!"<<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;}
运行结果:
0 0
- 第十三周项目一(二)
- 第十三周项目一:数组大折腾(二)
- 第十三周项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周 项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周项目二
- 第十三周项目一
- 第十三周项目一
- 第十三周项目一:
- 第十三周项目一
- 第十三周 项目一
- hdu 1157 Who's in the Middle
- 【操作系统总结】经典的进程同步问题-生产者消费者问题
- 在Mac上Git的使用(一)
- 爬虫笔记
- 黑马程序员——运算符
- 第十三周项目一(二)
- maven学习-02
- mark-java 正则表达式
- jquey easyui 常用方法
- Searching: Tree Search And Insertion
- 第十三周项目一(三)
- BUBBLESORT: INTRODUCTION TO ALGORITHMS
- 未言心相醉,不再接杯酒。
- hdu5246---超级赛亚ACMer(贪心)