【C++OJ多重继承与虚拟继承】OOP 水陆两用汽车(多重继承+虚拟继承)

题目描述

设计水陆两用汽车类。

定义Vehicle基类,包含成员变量:重量weight;成员函数:构造函数,setWeight,函数display

定义Car类,继承于Vehicle类,包含成员变量:空气排量aird;成员函数:构造函数,setAird,display

定义Boat类,继承于Vehicle类,包含成员变量:排水量tonnage;成员函数:构造函数,setTonnage,display

定义AmphibianCar类,继承于Car类与Boat类,包含成员函数:构造函数,display

构造AmphibianCar类(构造函数中输出相关信息),并输出相关属性值。随后修改各项属性值(set函数中输出相关信息),并输出。

输入

输入重量,空气排量,排水量

输入修改后的重量,空气排量,排水量

输出

构造AmphibianCar类(构造函数中输出相关信息),并输出相关属性值。随后修改各项属性值(set函数中输出相关信息),并输出。

输入样例

4 200 1.35
5 201 1.25

输出样例

载入Vehicle类构造函数
载入Car类构造函数
载入Boat类构造函数
载入AmphibianCar类构造函数
重量:4吨,空气排量:200CC,排水量:1.35吨
重新设置重量
重新设置空气排量
重新设置排水量
重量:5吨,空气排量:201CC,排水量:1.25吨

参考代码

#include <iostream>
using namespace std;class Vehicle //定义Vehicle基类
{public: //成员函数:构造函数,setWeight,函数displayVehicle(int wval) : weight(wval){cout << "载入Vehicle类构造函数" << endl;}void setWeight(int wval){weight = wval;cout << "重新设置重量" << endl;}void display(){cout << "重量:" << weight << "吨,";}protected:int weight; //包含成员变量:重量weight;
};//虚拟继承,只产生一个拷贝。(解决多继承时可能发生的对同一基类继承多次而产生的二义性问题)
class Car : virtual public Vehicle //定义Car类,继承于Vehicle类。
{public: //成员函数:构造函数,setAird,displayCar(int wval, int aval) : Vehicle(wval), aird(aval){cout << "载入Car类构造函数" << endl;}void setAird(int aval){aird = aval;cout << "重新设置空气排量" << endl;}void display(){cout << "空气排量:" << aird << "CC,";}protected:int aird; //包含成员变量:空气排量aird
};class Boat : virtual public Vehicle //定义Boat类,继承于Vehicle类 虚拟继承 
{public: //成员函数:构造函数,setTonnage,displayBoat(int wval, float tval) : Vehicle(wval), tonnage(tval){cout << "载入Boat类构造函数" << endl;}void setTonnage(float tval){tonnage = tval;cout << "重新设置排水量" << endl;}void display(){cout << "排水量:" << tonnage << "吨";}protected:float tonnage; //包含成员变量:排水量tonnage
};class AmphibianCar : public Car, public Boat //水陆两用汽车类,多重继承
{public:AmphibianCar(int wval, int aval, float tval) : Vehicle(wval), Car(wval, aval), Boat(wval, tval) //构造函数{cout << "载入AmphibianCar类构造函数" << endl; //构造AmphibianCar类(构造函数中输出相关信息),并输出相关属性值}void setAmphibianCar(int wval, int aval, float tval) //修改各项属性值(set函数中输出相关信息){Vehicle::setWeight(wval);Car::setAird(aval);Boat::setTonnage(tval);display();}void display(){Vehicle::display();Car::display();Boat::display();cout << endl;}
};int main()
{int weight, aird;float tonnage;cin >> weight >> aird >> tonnage;AmphibianCar a(weight, aird, tonnage);a.display();cin >> weight >> aird >> tonnage;a.setAmphibianCar(weight, aird, tonnage);
}

【C++OJ多重继承与虚拟继承】OOP 水陆两用汽车(多重继承+虚拟继承)相关推荐

  1. 注解默认继承_默认方法和多重继承

    注解默认继承 最近卢卡斯JOOQ埃德尔发布和文章有关嵌套类及其使用. 这是一个有趣的话题,他的文章一如既往地有趣并且值得一读. 只有一个简短的声明我无法同意,我们有一个简短的回复链,导致了默认方法,以 ...

  2. java继承孙子类_Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态 这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关 ...

  3. php 继承多个接口,PHP接口多继承及tarits实现多继承效果的方法

    本文实例讲述了PHP接口多继承及tarits实现多继承效果的方法.分享给大家供大家参考,具体如下: 接口多继承 在PHP的面向对象中,接口可以继承接口.PHP类只能继承一个父类(单继承),但是接口可以 ...

  4. java继承的范例_Java范例中的继承

    java继承的范例 Inheritance in java is one of the core concepts of Object Oriented Programming. Java Inher ...

  5. python类不支持多继承_关于Python类的多继承中的MOR继承顺序问题

    刚刚学到类的多继承这个环节,当子类继承多个父类时,调用的父类中的方法具体是哪一个我们无从得知,为此,在Python中有函数__mro__来表示方法解析顺序. 当前Python3.x的类多重继承算法用的 ...

  6. 【VirtualBox】VirtualBox使用现有的虚拟盘文件(如VHD)创建虚拟机时,报错:打开虚拟硬盘失败,“UUID already exist”的解决方法

    ###0.问题描述 使用现有的虚拟盘文件(如VHD)创建虚拟机时,报错:打开虚拟硬盘失败,"UUID already exists"的错误. ###1.参考博客 https://w ...

  7. php中 继承中的概念,JavaScript_JavaScript中的继承方式详解,js继承的概念 js里常用的如下 - phpStudy...

    JavaScript中的继承方式详解 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于 ...

  8. Linux 虚拟化网络技术 — 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun)

    目录 文章目录 目录 虚拟二层网卡(Tap)与虚拟三层隧道网卡(Tun) tap/tun 作为用户空间与内核空间的数据传输通道 tap/tun 与内核网络协议栈的数据传输 虚拟二层网卡(Tap)与虚拟 ...

  9. python 多继承与super使用详解_继承中的MRO与super详解

    Python进阶-继承中的MRO与super 写在前面如非特别说明,下文均基于Python3 摘要 本文讲述Python继承关系中如何通过super()调用"父类"方法,super ...

最新文章

  1. iOS测试基础(命令篇)-iPhone型号及其他信息
  2. Redis实战(12)订阅和发布消息
  3. JS-copy到剪贴板
  4. access的ole对象换成mysql_ACCESS的Ole对象读取写入
  5. 产品经理必懂技术术语(前端类)
  6. Python数据可视化案例二:动态更新数据
  7. cacti设置redis监控端口
  8. 【Navicat】Navicat:Navicat 导出数据库表为 EXCEL 格式、设计优化数据字典 EXCEL 模板
  9. wps html编辑表格,WPS教你如何使用平板电脑创建和编辑表格批注
  10. 可达性分析之三色标记算法详解
  11. 红旗河工程,南水北调西线工程,藏水入疆工程三合一
  12. 校招经历-java开发面试题
  13. 程序员的奋斗史(三十四)——人在囧途之应聘篇(四)
  14. javascript 3d 逐侦产品展示
  15. 关于JavaScript的Object所有方法
  16. unity-调用动态库so-android篇
  17. l7sa008b故障代码_奥克斯空调故障代码大全
  18. MySQL细节篇02_modify和change的区别
  19. 【计算机网络】家用路由器的NAT模式和路由模式
  20. 【51nod】3121 小陶与杠铃片

热门文章

  1. 使用Docker的NFS-Ganesha镜像搭建nfs服务器
  2. 电子商务商业模式思考
  3. 三,容器类型及其函数(列表,元组,字典,集合)
  4. 港股交易软件怎么用?需要学习哪些港股交易基本规则?
  5. android 课程表论文,毕业设计(论文)-基于Android的课程表管理的设计与实现.doc...
  6. 《天涯明月刀手游》如何快速提升功力值?
  7. Adobe国际认证-与布偶一起穿越迪士尼的鬼屋之旅
  8. Java:Java仍然处于领先地位?
  9. html代码实现简单的数码时钟
  10. Bing Maps必应地图