一道c++的超级厉害的题 求各位大神解答一下

定义一个哺乳动物类Mammal,并从中派生出一个狗类Dog,下面给出Mammal类的定义,要求:

1) 添加Dog类的颜色数据成员,访问属性为私有,通过SetColor和GetColor成员函数来对颜色进行设置和获取;添加性别数据成员,访问属性为保护,通过SetSex和GetSex成员函数来对性别进行设置和获取;添加品种数据成员,访问属性为公有,课选择是否定义SetKind和GetKind成员函数来对品种进行设置和获取。

2) 分别为基类和派生类添加相应的构造函数(有参、无参)和析构函数。

3) 分别采用公有派生,私有派生和保护派生三种方式进行继承,尝试各种方式对成员数据进行输入和输出。

class Mammal

{

private:

string itsName;

protected:

​​int itsAge;

public:

​​int itsWeight;

​int GetName(){return itsName;}

​void SetName (string name) { itsName=name;}

​int GetAge(){return itsAge;}

​void SetAge(int age) {itsAge=age;}

​int GetWeight() { return itsWeight;}

​void SetWeight(int weight) {itsWeight= weight;} 

 

};

 

以下三种继承方式单独测试,分别粘贴代码。

class Dog : public Mammal

{

​//定义Dog类的数据成员和成员函数

 

};

 

class Dog : protected Mammal

{

​//定义Dog类的数据成员和成员函数

 

};

 

class Dog : private Mammal

{

​//定义Dog类的数据成员和成员函数

};

 

 

class Mammal
{
private:
string itsName;
protected:
​​int itsAge;
public:
​​int itsWeight;
​int GetName(){return itsName;}
void SetName (string name) { itsName=name;}

​int GetAge(){return itsAge;}

​void SetAge(int age) {itsAge=age;}

​int GetWeight() { return itsWeight;}

​void SetWeight(int weight) {itsWeight= weight;} 

};

 
class Dog : public Mammal
{

​//定义Dog类的数据成员和成员函数
Dog(){}
Dog(string name,​​int age,​​int weight){
SetName(name);
SetAge(age);
SetWeight(weight);
//公有继承,可以拥有父类的所有publuc函数,所以此时不需要再重新定义
}
 

};

 

class Dog : protected Mammal
{
​//定义Dog类的数据成员和成员函数
Dog(){}
Dog(string name,​​int age,​​int weight){
SetName(name);
SetAge(age);
SetWeight(weight);
//保护继承,可以拥有父类的所有publuc函数,但是成员函数都变为保护,在类外部不能被调用,需要重新定义
}

int GetName2(){return GetName();}
void SetName2 (string name) { SetName(name);}

​int GetAge2(){return GetAge();}

​void SetAge2(int age) {SetAge(age);}

​int GetWeight2() { return GetWeight();}

​void SetWeight2(int weight) {SetWeight(weight);} 
};

 

class Dog : private Mammal
{
​//定义Dog类的数据成员和成员函数
Dog(){}
Dog(string name,​​int age,​​int weight){
SetName(name);
SetAge(age);
SetWeight(weight);
//私有继承,拥有父类的所有publuc函数,这些函数都变成私有,不能被类外部的对象调用,需要重新定义
}
int GetName2(){return GetName();}
void SetName2 (string name) { SetName(name);}

​int GetAge2(){return GetAge();}

​void SetAge2(int age) {SetAge(age);}

​int GetWeight2() { return GetWeight();}

​void SetWeight2(int weight) {SetWeight(weight);} 
};