您的位置:首页 > 其它

第十三周项目3:动物这样叫(3)

2016-05-31 19:07 429 查看
问题及代码:

/*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在基类中定义,这样,在派生类的构造函数写法和输出的时候要做出改变。

学习心得:

在基类中定义和在派生类中定义虽然效果一样,但是写法不一样,这些细节需要注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: