Problem Description

设计一个飞机Plane类,由它派生出歼击机Fighter类和轰炸机Bomber类,歼击机Fighter类和轰炸机Bomber类又共同派生出歼轰机(多用途战斗机)Fighter_Bomber类。虚基类描述飞机类及其派生的类族。

#include<iostream>
using namespace std;
class Plane    //飞机类
{
private:
    float wing;        //机翼长度
    float body;        //机身长度
    float tail;        //尾翼长度
    float voyage;      //航程
    int guest;         //旅客人数
public:
    Plane(float,float,float,float,int);    
    void display();
};
void Plane::display()
{
    cout<<"Plane:\twing:"<<wing<<" body:"<<body<<" tail:"<<tail<<" voyage:"<<voyage<<" guest:"<<guest;
}
Plane::Plane(float w,float b,float t,float v,int n)
{
    wing=w;
    body=b;
    tail=t;
    voyage=v;
    guest=n;
}
//你的代码将被嵌在这里

int main()
{    
    Fighter f(10.0,6.0,2.5,1800,1,8);             //歼击机
    f.display();
    Bomber b(30,9,6,12000,12,6000);             //轰炸机
    b.display();
    Fighter_Bomber fb(20,7,3.2,4000,2,6,2500);    //歼轰机
    fb.display();   
    return 0;
}

Sample Output
This is a fighter!
Plane:  wing:10 body:6 tail:2.5 voyage:1800 guest:1
missile:8
This is a bomber!
Plane:  wing:30 body:9 tail:6 voyage:12000 guest:12
bomb:6000
This is a fighter_bomber!
This is a fighter!
Plane:  wing:20 body:7 tail:3.2 voyage:4000 guest:2
missile:6
bomb:2500
Fight!
Attack!

Hint

1、Plane类有数据成员:wing(机翼长度),body(机身长度),tail(尾翼长度),voyage(航程),guest(旅客人数);成员函数display,用于显示数据成员的值;

2、Fighter类(歼击机类)有新的数据成员missile(导弹数),重定义了display函数,新定义了fight函数(输出字符串“Fight!”);

3、Bomber类(轰炸机类)有新的数据成员bomb(载弹量),重定义display函数,新定义attack函数(输出字符串“Attack!”)、getbomb函数。

4、Fighter_Bomber类(歼轰机类), 重定义了display函数。

5、Plane类(飞机类)为虚基类。

class Fighter : virtual public Plane
{public:int missile; //导弹数Fighter(float w, float b, float t, float v, int n, int m):Plane(w, b, t, v, n), missile(m) {}void display(){cout << "This is a fighter!" << endl;Plane::display();cout << "\nmissile:" << missile << endl;}
};class Bomber : virtual private Plane
{
public:int bomb;// (载弹量)Bomber(float w, float b, float t, float v, int n, int o) : Plane(w, b, t, v, n), bomb(o) {};void display(){cout << "This is a Bomber!" << endl;Plane::display();cout << "\nbomb:" << bomb << endl;}
};class Fighter_Bomber : private Fighter, private Bomber
{
public: Fighter_Bomber(float w, float b, float t, float v, int n, int m, int o) : Fighter(w, b, t, v, n, m), Bomber(w, b, t, v, n, o), Plane(w, b, t, v, n) {};void display(){cout << "This is a fighter_bomber!" << endl;cout << "This is a fighter!" << endl;Plane::display();cout << "\nmissile:" << missile << endl;cout << "bomb:" << bomb << endl;cout << "Fight!" << endl;cout << "Attack!" << endl;}
};

Problem N: 设计飞机类Plane及其派生类相关推荐

  1. C++改变基类成员在派生类中的访问属性

    使用using声明可以改变基类成员在派生类中的访问属性.我们知道基类的公有成员经过公有继承,在派生类中其属性为public的,但是通过using 声明,我们可以将其改为private或protecte ...

  2. 基类数组存放派生类_永远不要将派生类数组赋值给基类类型指针

    C.152: Never assign a pointer to an array of derived class objects to a pointer to its base C.152:永远 ...

  3. C++基类指针指向派生类(指针)

    我们常用基类指针指向派生类对象来实现多态性. 私有继承不允许基类指针指向派生类 基类指针只能访问到基类中含有的公有成员. 当用基类指针指向派生类对象在动态分配堆上内存的时候,析构函数必须是虚函数! 成 ...

  4. C++中public/private/protected三种继承方式下基类成员对派生类的可见性探讨

     原文: http://blog.csdn.net/zgjxwl/article/details/4804233 1.public继承方式下 #include <iostream>   ...

  5. 定义一个三角形类(TRI)及其派生类三角柱体类(COL)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。其具体要求如下: (1)TRI的成员如下:  私有数据成员 

    题目要求: 定义一个三角形类(TRI)及其派生类三角柱体类(COL).其中三角形类可以计算三角形的面积和周长:三角柱体类可以计算柱体的体积和表面积.其具体要求如下: (1)TRI的成员如下: 私有数据 ...

  6. java派生类属例子_【备考】带你认识相关类属vs派生类属!

    原标题:[备考]带你认识相关类属vs派生类属! 关于下位学习中的相关类属和派生类属总有一些同学在做题过程中出现疑惑,做题也是错误率较高.究其原因就是同学们掌握二者概念的时候,很多人都是用例子来记住概念 ...

  7. 不同派生方式下基类成员在派生类中的可访问范围属性

    不同派生方式下基类成员在派生类中的可访问范围属性 派生方式 派生方式 派生方式 基类成员 公有派生 私有派生 保护派生 私有成员 不可访问 不可访问 不可访问 保护成员 保护 私有 保护 公有成员 公 ...

  8. 虚函数之定义一个基类Shape,在此基础上派生出Rectangle和Circle再使用Rectangle类创建一个派生类Square。

    定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea( )函数计算对象的面积,再使用Rectangle类创建一个派生类Square.将getArea()改造 ...

  9. 7.试定义RECT类(长方形)及其派生类CUB(长方体)

    7.试定义RECT类(长方形)及其派生类CUB(长方体),具体要求如下: (1)类RECT的成员如下:(a)保护数据成员double x,y;分别表示长方形的长和宽.(b)公有成员函数 RECT(do ...

最新文章

  1. 小米平板2第三方rom_【2020年1月10日更新】小米手机全系列设备代号一览
  2. TypeError: unhashable type: 'dict'
  3. java连接stk外部接口_SLWSTK无线开发工具上的外扩串口如何使用(虚拟串口/VCOM)...
  4. Redis的哨兵机制 或者心跳机制 模式 原理详解
  5. Java 内部类 和 匿名内部类
  6. Grub2主题修改和美化--------LinuxWindows
  7. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
  8. 三组计算机局域网组网方案,多种方式组建家庭局域网
  9. 设计模式——原形模式
  10. 分享国内外好用的H5页面制作网站
  11. python get rect 函数_Python之Pygame.rect函数
  12. 【爬虫】爬取百度搜索结果页面
  13. 玩转PHP(一)---php中处理汉字字符串长度:strlen和mb_strlen
  14. 一些数据采集卡使用过程中常见问题
  15. 螃蟹RTS5733DL固态硬盘,曲线救盘案例……
  16. mysql基础入门SQL基本语法
  17. simulink 脱离 matlab,Simulink软件不能脱离MATLAB环境而运行
  18. 从 pthread_t 获得 PID 和 TID
  19. 2021-11-15----韩顺平Java入门第九天
  20. ELK - Filebeat重启之后不读Log了?Registry file is too large

热门文章

  1. 老李聊股:中油工程(第三篇)
  2. 不可不知的安卓屏幕知识
  3. 苹果电脑怎么更换计算机模式,苹果电脑装windows7后怎么切回来_苹果电脑安装win7后如何切换...
  4. 2021-07-16 yarn Total VCores allocated for Containers 与服务器上cpu核数不一致原因
  5. 公司算法面试笔试题目集锦,个人整理,不断更新中
  6. 合同和协议的区别_合同和协议有什么区别?
  7. 网页转exe的三种方法
  8. 9小时突破1000亿,你以为这就是阿里双十一的最大胜利?
  9. beego的安装和升级
  10. 看完CNCERT周报再来看CNVD周报 报告提示Flash及Http2.0漏洞值得关注