描述
长期的物种进化使两栖动物既能活跃在陆地上,又能游动于水中。利用虚基类建立一个类的多重继承,包括动物(animal,属性有体长,体重和性别),陆生动物(ter_animal,属性增加了奔跑速度),水生动物(aqu_animal,属性增加了游泳速度)和两栖动物(amp_animal)。其中两栖动物保留了陆生动物和水生动物的属性。
要求: animal只有带参的构造函数。其他函数根据需要自行设置
输入
两栖动物的体长,体重,性别,游泳速度,奔跑速度(running_speed)
输出
初始化的两栖动物的体长,体重,性别,游泳速度,奔跑速度(running_speed)和输入的两栖动物的体长,体重,性别,游泳速度,奔跑速度(running_speed)
样例输入
52 22 f 102 122
样例输出
height:52 weight:22 sex:f swimming_speed:102 running_speed:122
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
class animal
{
int height,weight;
char sex[10];
public:
animal(int a,int b,char c[10]){
height=a;
weight=b;
strcpy(sex,c);
}
int get_height()
{
return height;
}
int get_weight()
{
return weight;
}
char* get_sex()
{
return sex;
}
};
class ter_animal:virtual public animal
{
int run_speed;
public:
ter_animal(int a,int b,char c[10],int d):animal(a,b,c)
{
run_speed=d;
}
int get_run_speed()
{
return run_speed;
}
};
class aqu_animal:virtual public animal
{
int swim_speed;
public:
aqu_animal(int a,int b,char c[10],int d):animal(a,b,c)
{
swim_speed=d;
}
int get_swim_speed()
{
return swim_speed;
}
};
class amp_animal:public ter_animal,public aqu_animal
{
public:
amp_animal(int a,int b,char c[10],int d,int e):animal(a,b,c),ter_animal(a,b,c,e),aqu_animal(a,b,c,d){}
void print()
{
cout<<"height:"<<get_height()<<endl;
cout<<"weight:"<<get_weight()<<endl;
cout<<"sex:"<<get_sex()<<endl;
cout<<"swimming_speed:"<<get_swim_speed()<<endl;
cout<<"running_speed:"<<get_run_speed()<<endl;
}
};
int main()
{
int a,b,d,e;
char c[10];
cin>>a>>b>>c>>d>>e;
amp_animal x(a,b,c,d,e);
x.print();
return 0;
}