第十三周项目3:动物这样叫(3)
2016-05-31 19:07
429 查看
问题及代码:
运行结果:
![](http://img.blog.csdn.net/20160531190410395)
知识点总结:
把派生类中公共的name在基类中定义,这样,在派生类的构造函数写法和输出的时候要做出改变。
学习心得:
在基类中定义和在派生类中定义虽然效果一样,但是写法不一样,这些细节需要注意。
/*Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:崔青青 *完成日期:2016年5月31日 *版 本 号:v1.0 *问题描述: *输入描述:无 *输出描述:无 */ #include <iostream> using namespace std; class Animal { private: string name; public: Animal(string n):name(n){} virtual void cry()=0; string dis() { return name; } }; class Mouse:public Animal { private: string sex; public: Mouse(string n,string s):Animal(n),sex(s){} void cry() { string s; if(sex=="f") s="女"; else s="男"; cout<<"我叫"<<dis()<<","<<"是一只"<<s<<"老鼠,我的叫声是:吱吱吱!"<<endl; } }; class Cat:public Animal { public: Cat(string n):Animal(n){} void cry() { cout<<"我叫"<<dis()<<","<<"是一只猫,我的叫声是:喵喵喵!"<<endl; } }; class Dog:public Animal { public: Dog(string n):Animal(n){} void cry() { cout<<"我叫"<<dis()<<","<<"是一只狗,我的叫声是:汪汪汪!"<<endl; } }; class Giraffe:public Animal { private: string sex; public: Giraffe(string n,string s):Animal(n),sex(s){} void cry() { string s; if(sex=="f") s="女"; else s="男"; cout<<"我叫"<<dis()<<","<<"是一只"<<s<<"长颈鹿,我的脖子太长,发不出声音来!"<<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; }
运行结果:
知识点总结:
把派生类中公共的name在基类中定义,这样,在派生类的构造函数写法和输出的时候要做出改变。
学习心得:
在基类中定义和在派生类中定义虽然效果一样,但是写法不一样,这些细节需要注意。
相关文章推荐
- Map集合遍历的2种方法
- <Js>修改样式
- 第十二周项目4-String类的构造
- 飛飛(五十二)抽象类的应用,用指向基类的指针,且基类为抽象类
- Linux编程学习环境搭建
- 5月31日
- [MongoDB]count,gourp,distinct
- POJ-2387 Til the Cows Come Home ( 最短路 )
- Java创建文件
- 向上沟通
- 你好,Oh My Zsh - 社区力量全新方式定义命令行
- Java加密技术(三)——PBE算法
- 第十四周 5.30 --- 6.5
- 【Gradle】管理库工程release及debug
- Python学习笔记 2 字符串的操作大全
- 【Jmeter】参数Parameters和Body Data
- 写监听和DOM时那些傻逼的错误
- #MYSQL子查询
- 关于android自定义键盘
- Docker学习(一)