虚基类练习:动物(利用虚基类建立一个类的多重继承,包括动物(animal,属性有体长,体重和性别),陆生动物(ter_animal,属性增加了奔跑速度),水生动物(aqu_animal,属性增加了游泳速度)和两栖动物(amp_animal)。)

Description

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

Input

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

Output

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

Sample Input

52
22
f
102
122

Sample Output

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

hight:52
weight:22
sex:f
swimming_speed:102
running_speed:122

HINT

前置代码及类型定义已给定如下,提交时不需要包含,会自动添加到程序前部

/*C++代码*/

#include <iostream>

using namespace std;

class animal

{

protected:

int hight;  //身高或体长

int weight;  //体重

char sex;   //性别

public:

animal(){}

animal(int h,int w,char s):

hight(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){}

};

主函数已给定如下,提交时不需要包含,会自动添加到程序尾部

/*C++代码*/

int main()

{

amp_animal a1(50,20,‘m‘,100,120);

amp_animal a2;

a2.input();

a1.show();

cout<<endl;

a2.show();

return 0;

}


 1 #include <iostream>
2
3 using namespace std;
4
5 class animal
6
7 {
8
9 protected:
10
11 int hight;
12
13 int weight;
14
15 char sex;
16
17 public:
18
19 animal(){}
20
21 animal(int h,int w,char s):
22
23 hight(h),weight(w),sex(s){}
24
25 };
26
27 class aqu_animal:virtual public animal
28
29 {
30
31 protected:
32
33 int swimming_speed;
34
35 public:
36
37 aqu_animal(){}
38
39 aqu_animal(int h,int w,char s,int s_p):
40
41 animal(h,w,s),swimming_speed(s_p){}
42
43 };class ter_animal:virtual public animal
44 {
45 protected:
46 int running_speed;
47 public:
48 ter_animal(){}
49 ter_animal(int h,int w,char s,int r_p):
50 animal(h,w,s),running_speed(r_p){}
51 };
52 class amp_animal:public aqu_animal,public ter_animal
53 {
54 public:
55 amp_animal(){}
56 amp_animal(int h,int w,char s,int s_p,int r_p):
57 animal(h,w,s),aqu_animal(h,w,s,s_p),ter_animal(h,w,s,r_p){}
58 void input()
59 {cin>>hight>>weight>>sex>>swimming_speed>>running_speed;}
60 void show()
61 {cout<<"hight:"<<hight<<endl;
62 cout<<"weight:"<<weight<<endl;
63 cout<<"sex:"<<sex<<endl;
64 cout<<"swimming_speed:"<<swimming_speed<<endl;
65 cout<<"running_speed:"<<running_speed<<endl;}
66 };
67 int main()
68
69 {
70
71 amp_animal a1(50,20,‘m‘,100,120);
72
73 amp_animal a2;
74
75 a2.input();
76
77 a1.show();
78
79 cout<<endl;
80
81 a2.show();
82
83 return 0;
84
85 }

虚基类练习:动物(利用虚基类建立一个类的多重继承,包括动物(animal,属性有体长,体重和性别),陆生动物(ter_animal,属性增加了奔跑速度),水生动物(aqu_animal,属性增加了游泳速度)和两栖动物(amp_animal)。),布布扣,bubuko.com

时间: 2024-12-25 12:29:47

虚基类练习:动物(利用虚基类建立一个类的多重继承,包括动物(animal,属性有体长,体重和性别),陆生动物(ter_animal,属性增加了奔跑速度),水生动物(aqu_animal,属性增加了游泳速度)和两栖动物(amp_animal)。)的相关文章

【OC学习-15】如何判断两个对象是否属于同一个类?如何判断一个对象是否属于某一个类?

每个对象都有一个isa,这个isa里面储存了很多关于类对象的一些信息,所以当这个对象编译的时候,程序会通过isa来查看这个对象的类型,即执行的时候再识别叫动态类型识别.而且这个对象里面的方法其实是被封装在SEL里面(有方法ID和内容),当外面利用方法传递消息的时候,先把这个方法ID化,然后找相同ID的方法,找到了就调用,找不到就通过isa里存储的信息往父类找,最终找不到,就报错.(相同的方法签名=相同的ID) (1)每个对象都可以调用类对象,如果它们是一个类出来的,它们的类对象也是一样的,所以判

使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。

设计思想 定义一个静态字段,在构造函数中写一个静态字段自家的语句,这样,因为静态字段不会因为在此调用而改变数值所以可以计算建立对象的个数. 源代码 //使用静态字段和构造函数跟踪对象 package bao; public class sum { public static int a=0; int c; public sum(int cc) { c=cc; a++; } public int get() { return a; } } package bao; public class D_X

简单利用xml结合PHP建立一个天气查询表单

html页面 <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <form method="POST" action="weather.php"> 请输入要查询的城市<i

如何利用Cool Edit Pro建立一个数字音乐工作室

相信很多音乐爱好者,对于"专业录音棚"."音乐工作室"都深深地向往.呵呵,多么希望自己家中能拥有一套专业的音乐工作室啊.好在现在PC上的也突飞猛进,在普通的个人电脑上,拥有基于PC平台的数字音乐工作室成为了可能,实际上全世界的专业音乐棚都在越来越多地使用PC数字化技术.Cool Edit Pro 2.1是一款非常优秀的唱片制作软件,有了它,在一台普通电脑上(声卡要好一点)就可以实现你的制作唱片之梦了. 打开Cool Edit Pro 2.1(如图),它有两个操作界面

C++类成员空间分配和虚函数表

最近在自学python,看到继承和类,就顺便复习了C++的类和继承等方面的知识. 先看Base基类 class Base { private: virtual void display() { cout<<"Base display()"<<endl; } void say(){ cout<<"Base say()"<<endl; } public: virtual void func(){cout <<

利用反射获取一个类实例的所有属性名称和值 拼接为字符串

需要一个功能:获取一个类实例的所有属性名称和值并拼接为字符串,然后进行处理.代码保存在此以备后用. 建立一个类文件ClassToString.cs 以下代码可以直接使用,参数为一个类的实例,返回的是一个数组,[0]为属性名的拼接,[1]为属性Value的拼接. 对于类的属性类型没有限制,但是如果没有全部赋值的话,Value会范围默认值, 比如int为0,String为空,DateTime为0001/1/1 0:00:00,0,0,0 需要有需要的话可以在拼接的时候判断进行相应处理 ClassTo

python (知识点:类)简单的创建一个类

#!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Mon Nov 14 01:01:29 2016 @author: toby """ #知识点:类和对象 #名词:1.实例化一个类,生成一个对象,通过类进行实例化来生成一个对象 class Animal:     body = 'Four legs' class Human: #类的名称     body = 'Hands, 

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

java学习笔记—实现一个类MyInputStream(28)

1 实现一个类MyInputStream读取文件,且不能抛出异常 public class TestDemo { public static void main(String[] args) throws Exception { InputStream in = new MyInputStream("d:/a/a.txt"); byte[] b = new byte[1024]; int len = 0; while((len=in.read(b))!=-1){ String s =