*Copyright(c) 2016.煙臺大學計算機與控制工程學院
*ALL rights reserved.
*文件名稱:main.cpp
*作者:孫亞茹
*完成日期:2016年6月1日
*問題描述:在(2)的基礎上將”名字“數據成員設置爲基類的成員,改造程序。
*//
#include <iostream>
using namespace std;
class Animal
{
protected:
string name;
public:
Animal(string nam):name(nam){};
virtual void cry()=0;
};
class Mouse:public Animal
{
private:
char sex;
public:
Mouse(string nam,char se):Animal(nam),sex(se){};
void cry();
};
void Mouse::cry()
{
cout<<"我叫"<<name<<", 是一隻"<<((sex=='m')?"男":"女")<<"老鼠, 我的叫聲是:吱吱吱!"<<endl;
}
class Cat:public Animal
{
public:
Cat(string nam):Animal(nam){};
void cry();
};
void Cat::cry()
{
cout<<"我叫"<<name<<", 是一隻貓, 我的叫聲是:喵喵喵!"<<endl;
}
class Dog:public Animal
{
public:
Dog(string nam):Animal(nam){};
void cry();
};
void Dog::cry()
{
cout<<"我叫"<<name<<",是一條狗, 我的叫聲是:汪汪汪!"<<endl;
}
class Giraffe:public Animal
{
private:
char sex;
public:
Giraffe(string nam,char se):Animal(nam),sex(se){};
void cry();
};
void Giraffe::cry()
{
cout<<"我叫"<<name<<", 是"<<((sex=='m')?"男":"女")<<"長頸鹿, 我的脖子太長,發不出聲音來!"<<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設置爲基類的成員後派生類的構造函數要改變,另外一定不能忘了基類中要有對數據成員初始化的構造函數。