[YTU]_2566( 虚基类练习:动物)

题目描述

长期的物种进化使两栖动物既能活跃在陆地上,又能游动于水中。利用虚基类建立一个类的多重继承,包括动物(animal,属性有体长,体重和性别),陆生动物(ter_animal,属性增加了奔跑速度),水生动物(aqu_animal,属性增加了游泳速度)和两栖动物(amp_animal)。其中两栖动物保留了陆生动物和水生动物的属性。

输入

两栖动物的体长,体重,性别,游泳速度,奔跑速度(running_speed)

输出

初始化的两栖动物的体长,体重,性别,游泳速度,奔跑速度(running_speed)和输入的两栖动物的体长,体重,性别,游泳速度,奔跑速度(running_speed)

样例输入

52
22
f
102
122

样例输出

height:50
weight:20
sex:m
swimming_speed:100
running_speed:120

height:52
weight:22
sex:f
swimming_speed:102
running_speed:122
#include <iostream>
 
using namespace std;
 
class animal
 
{
 
protected:
 
    int height;  
 
    int weight;  
 
    char sex;   
 
public:
 
    animal(){}
 
    animal(int h,int w,char s):
 
        height(h),weight(w),sex(s){}
 
};
 
class aqu_animal:virtual public animal  
 
{
 
protected:
 
    int swimming_speed;  
 
public:
 
    aqu_animal(){}
 
    aqu_animal(int h,int w,char s,int s_p):
 
        animal(h,w,s),swimming_speed(s_p){}
 
};class ter_animal:virtual public animal
{
protected:
    int running_speed;
public:
    ter_animal(){};
    ter_animal(int h,int w,char s,int r_s):animal(h,w,s),running_speed(r_s){}
};
class amp_animal:public aqu_animal,public ter_animal
{
public:
    amp_animal(){}
    amp_animal(int h,int w,char s,int s_p,int r_s):animal(h,w,s),aqu_animal(h,w,s,s_p), ter_animal(h,w,s,r_s){}
    void input()
    {
        cin>>height>>weight>>sex>>swimming_speed>>running_speed;
    }
    void show()
    {
    cout<<"height:"<<height<<endl<<"weight:"<<weight<<endl<<"sex:"<<sex<<endl<<"swimming_speed:"<<swimming_speed<<endl<<"running_speed:"<<running_speed<<endl;
    }
};
int main()
 
{
 
    amp_animal a1(50,20,'m',100,120);
 
    amp_animal a2;
 
    a2.input();
 
    a1.show();
 
    cout<<endl;
 
    a2.show();
 
    return 0;

posted @ 2017-06-08 18:55  衣带渐宽、为伊憔悴  阅读(186)  评论(0编辑  收藏  举报