第13周项目1-动物这样叫
来源:互联网 发布:jdk 6u45 linux x64 编辑:程序博客网 时间:2024/05/22 02:00
/* *All rights reserved. *文件名称:main.cpp *作 者:姜 甜 甜 *完成日期:2015年6月1日 *版 本 号:v1.0 *问题描述: 1、根据给出的main()函数和运行结果的提示,设计出相关的各个类,注意观察运行结果,提取出每个类中需要的数据成员,并匹配上需要的成员函数。*/
#include<iostream>#include<cstring>using namespace std;class Animal{public: virtual void cry() { cout<<"不知哪种动物,让我如何学叫?"<<endl; }};class Mouse:public Animal{public: Mouse(char *n,char ss):s(ss) { strcpy(name,n); } void cry() { cout<<"我叫"<<name<<",是一只"; if(s=='m') cout<<"男"; else cout<<"女"; cout<<"老鼠,我的叫声是:吱吱吱!"<<endl; }private: char name[15]; char s;};class Cat:public Animal{public: Cat(char *n) { strcpy(name,n); } void cry() { cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl; }private: char name[15];};class Dog:public Animal{public: Dog(char *n) { strcpy(name,n); } void cry() { cout<<"我叫"<<name<<",是一条狗,我的叫声是:汪汪汪!"<<endl; }private: char name[15];};class Giraffe:public Animal{public: Giraffe(char *n,char ss):s(ss) { strcpy(name,n); } void cry() { cout<<"我叫"<<name<<",是一只"; if(s=='m') cout<<"男"; else cout<<"女"; cout<<"长颈鹿,我的脖子太长,叫不出来!"<<endl; }private: char name[15]; char s;};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;}
2、显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。 3、每一个Animal的派生类都有一个“名字”数据成员,这个成员设置为基类Animal的成员更好。改造上面的程序,将“名字”成员作为抽象类Animal数据成员被各派生类使用
#include<iostream>#include<cstring>using namespace std;class Animal <span style="color:#cc0000;"> //为抽象类</span>{public: Animal(string n):name(n){} <span style="color:#cc0000;"> //构造函数别忘记</span> virtual void cry()=0;//声明语句protected: string name;};class Mouse:public Animal{public: Mouse(string n,char ss):Animal(n),s(ss){} void cry() { cout<<"我叫"<<name<<",是一只"; if(s=='m') cout<<"男"; else cout<<"女"; cout<<"老鼠,我的叫声是:吱吱吱!"<<endl; }private: char s;};class Cat:public Animal{public: Cat(string n):Animal(n){} void cry() { cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl; }};class Dog:public Animal{public: Dog(string n):Animal(n){} void cry() { cout<<"我叫"<<name<<",是一条狗,我的叫声是:汪汪汪!"<<endl; }};class Giraffe:public Animal{public: Giraffe(string n,char ss):Animal(n),s(ss){} void cry() { cout<<"我叫"<<name<<",是一只"; if(s=='m') cout<<"男"; else cout<<"女"; cout<<"长颈鹿,我的脖子太长,叫不出来!"<<endl; }private: char s;};int main( ){ Animal *p; //p = new Animal(); <span style="color:#cc0000;">抽象类不能定义对象,错误</span> //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
- 【第13周项目-动物这样叫】
- 第13周 【项目1-动物这样叫】(1)
- 第13周项目1-动物这样叫(1)
- 第13周项目1-动物这样叫(1)
- 第13周项目1-动物这样叫(1)
- 第13周项目1-动物这样叫(1)
- 第13周 【项目1-动物这样叫】(2)
- 第13周 【项目1-动物这样叫】(3)
- 第13周项目1动物这样叫(3)
- 第13周-多态性-项目1-动物这样叫
- 第13周项目1—动物这样叫
- 第13周项目1—动物这样叫2.3
- 第13周项目1-动物这样叫
- 第13周项目1-动物这样叫
- 第13周项目1-动物这样叫(2)
- 第13周项目1-动物这样叫(2)
- 第13周项目1-动物这样叫(3)
- 第13周项目1-动物这样叫
- Android 知识点记录
- 钱满仓帮助了我
- JSON字符串写法和使用
- gcc-linaro-arm-linux-gnueabihf
- 第三节---nginx轻缓存安装与站点配置
- 第13周项目1-动物这样叫
- beyond compare 与git diff整合
- linux grep显示指定内容前后指定行数的方法
- java字符操作获取汉字的拼音以及其他常用工具
- Pool of Argument Topics 21-30
- [php] Thinkphp删除图片和数据库记录
- LeetCode OJ 之 Remove Linked List Elements(删除链表中的元素)
- TNS-12535: TNS:operation timed out
- 社説 20150602 自転車事故対策 講習で危険運転を抑止したい