您的位置:首页 > 其它

第13周项目2-动物怎么叫(改)

2016-05-31 18:58 387 查看
/*
*Copyright(C) 2016,计算机与控制工程学院
*All rights reserved.
*文件名:zhang.cpp
*作者:张志新
*完成日期:2016年5月31日
*版本号:v1.0
*问题描述:动物怎么叫
*/
#include <iostream>
#include <Cmath>
using namespace std;
class Animal
{
public:
virtual void cry()=0;//定义纯虚函数,在基类里不实现
//     {
//       cout<<"不知哪种动物,让我如何学叫?"<<endl;
//     }
};
class Mouse:public Animal
{
private:
string name;
char sex;
public:
Mouse(string na,char se):name(na),sex(se){}
void cry()
{
cout<<"我叫"<<name<<",是一只"<<((sex=='m')?"男":"女")<<"老鼠,我的叫声是:吱吱吱!"<<endl;
}
};
class Cat:public Animal
{
private:
string name;
public:
Cat(string na):name(na){}
void cry()//在派生的函数中不用写vritual了
{
cout<<"我叫"<<name<<",是一只猫,我的叫声是:喵喵喵!"<<endl;
}
};
class Dog : public Animal
{
private:
string name;
public:
Dog(string na):name(na){}
void cry()
{
cout<<"我叫"<<name<<",是一条狗,我的叫声是:汪汪汪!"<<endl;
}
};
class Giraffe : public Animal
{
private:
string name;
char sex;
public:
Giraffe(string na,char se):name(na),sex(se){}
void cry()
{
cout<<"我叫"<<name<<",是"<<((sex=='m')?"男":"女")<<"长颈鹿,我的脖子太长,发不出声音来!"<<endl;//(sex=='m')?"男":"女"是判断sex的语句
}
} ;
int main( )
{
Animal *p;
//p = new Animal();//分配动态空间
//p->cry();
Mouse m1("Jerry",'m');
p=&m1;//把地址赋给p
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;
}




学习心得:

这个程序是就上一个程序的改进,把虚函数改成了纯虚函数(即为改为了抽象类),1.为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2.在很多情况下,基类本身生成对象是不合情理的。在用了纯虚函数就不在需要声明动态内存。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: