第13周 【项目1-动物这样叫】(3)
来源:互联网 发布:java返回页面 编辑:程序博客网 时间:2024/04/28 05:06
问题描述:
下面是给出的基类Animal声明和main()函数。
<strong><span style="font-family:KaiTi_GB2312;font-size:18px;color:#ff6666;">class Animal{public: virtual void cry() { cout<<"不知哪种动物,让我如何学叫?"<<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;}</span></strong>
程序的运行结果将是:
3、每一个Animal的派生类都有一个“名字”数据成员,这一共有的成员完全可以由基类提供改造上面的程序,将这一数据成员作为抽象类Animal数据成员被各派生类使用。
代码:
#include <iostream>#include <cstring>using namespace std;class Animal{protected: string name;public: Animal (string s):name(s){} virtual void cry()=0;};class Mouse:public Animal{private: char sex;public: Mouse(string s,char x):Animal(s),sex(x){} void cry(){ cout<<"我叫"<<name<<",我是一只"<<(sex=='m'?"公":"母")<<"老鼠,我的叫声是:吱吱吱!\n"; }};class Cat:public Animal{public: Cat(string s):Animal(s){} void cry(){ cout<<"我叫"<<name<<",我是一只猫,我的叫声是:喵喵喵!\n"; }};class Dog:public Animal{public: Dog(string s):Animal(s){} void cry(){ cout<<"我叫"<<name<<",我是一只狗,我的叫声是:汪汪汪!\n"; }};class Giraffe:public Animal{private: char sex;public: Giraffe(string s,char x):Animal(s),sex(x){} void cry(){ cout<<"我叫"<<name<<",我是一只"<<(sex=='m'?"公":"母")<<"长颈鹿,我的脖子太长,发不出声音来!\n"; }};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;}
运行结果:
0 0
- 第13周 【项目1-动物这样叫】(3)
- 第13周项目1动物这样叫(3)
- 第13周项目1-动物这样叫(3)
- 第13周项目1-动物这样叫(3)
- 第13周项目1-动物这样叫(3)
- 第13周-项目1-动物这样叫(3)
- 第13周 【项目1-动物这样叫】(1)
- 第13周项目1-动物这样叫(1)
- 第13周项目1-动物这样叫(1)
- 第13周项目1-动物这样叫(1)
- 第13周项目2:动物这样叫(3)
- 第13周项目2--动物这样叫(3)
- 第13周 【项目1-动物这样叫】(2)
- 第13周项目1-动物这样叫(2)
- 第13周项目1-动物这样叫(2)
- 第13周项目1-动物这样叫(2)
- 第13周-项目2-动物这样叫(1)
- 第13周-项目1-动物这样叫(2)
- Struts2 结合 Ajax 实现异步交互数据
- 使用CXF开发RESTFul服务
- asp.net 导出GridView、其它控件到Excel(防止中文乱码)
- mysql 中文乱码问题
- SQLiteDataBase数据库的使用
- 第13周 【项目1-动物这样叫】(3)
- 新SAT数学样题及答案Question 16
- 设计模式
- 微软100题(32)交换两个数组元素,使得两个数组和差值最小
- C#学习 - 关于值类型和引用类型
- Struts2注解
- sql之left join、right join、inner join的区别
- ant 打包war 相关操作
- JS分页