当前位置: 代码迷 >> 综合 >> 6-29 水上飞机(*) (20分)多重继承
  详细解决方案

6-29 水上飞机(*) (20分)多重继承

热度:43   发布时间:2024-02-11 12:02:23.0
  • 飞机类,同时以公有方式继承PLANE类和SHIP类,兼具飞机和船的特性。包括:

    三个公有成员函数:构造函数(初始化速度、翼展、吃水深度)、析构函数和Show函数(显示速度、翼展和吃水深度)。

测试用例

1) 样例一

CRAFT *p;
p = new CRAFT(87.2);
p->Show();
delete p;
创建航行器(速度: 87.2)
航行(速度: 87.2)
销毁航行器(速度: 87.2)

2) 样例二

CRAFT *p;
p = new PLANE(613.5, 45.3);
p->Show();
delete p;
创建航行器(速度: 613.5)
创建飞机(翼展: 45.3)
航行(速度: 613.5, 翼展: 45.3)
销毁飞机(翼展: 45.3)
销毁航行器(速度: 613.5)

3) 样例三

CRAFT *p;
p = new SHIP(45.8, 8.3);
p->Show();
delete p;
创建航行器(速度: 45.8)
创建船(吃水: 8.3)
航行(速度: 45.8, 吃水: 8.3)
销毁船(吃水: 8.3)
销毁航行器(速度: 45.8)

4) 样例四

CRAFT *p;
p = new SEAPLANE(415.2, 36.5, 2.1);
p->Show();
delete p;
创建航行器(速度: 415.2)
创建飞机(翼展: 36)
创建船(吃水: 2.1)
创建水上飞机
航行(速度: 415.2, 翼展: 36, 吃水: 2.1)
销毁水上飞机
销毁船(吃水: 2.1)
销毁飞机(翼展: 36)
销毁航行器(速度: 415.2)

测试程序

#include <iostream>
using namespace std;/* 你提交的代码将被嵌在这里 */int main()
{CRAFT *p;p = new SEAPLANE(415.2, 36.5, 2.1);p->Show();delete p;return 0;
}#### 输出样例```out
创建航行器(速度: 415.2)
创建飞机(翼展: 36.5)
创建船(吃水: 2.1)
创建水上飞机
航行(速度: 415.2, 翼展: 36.5, 吃水: 2.1)
销毁水上飞机
销毁船(吃水: 2.1)
销毁飞机(翼展: 36.5)
销毁航行器(速度: 415.2)

答案:

class CRAFT{
protected:
double speed;
public:
CRAFT(double a):speed(a)
{cout<<"创建航行器(速度: "<<speed<<")"<<endl;}


virtual  ~CRAFT()//一定要是virtual,不然后面的析构都没办法进行


{cout<<"销毁航行器(速度: "<<speed<<")"<<endl;}
virtual void Show()
{cout<<"航行(速度: "<<speed<<")"<<endl;}
};


class PLANE:virtual public CRAFT{//关键字 virtual


protected:
double wi;
public:
PLANE(double a,double b):CRAFT(a),wi(b)
{cout<<"创建飞机(翼展: "<<wi<<")"<<endl;}
~PLANE()
{cout<<"销毁飞机(翼展: "<<wi<<")"<<endl;}
void Show()
{cout<<"航行(速度: "<<speed<<", 翼展: "<<wi<<")"<<endl;     }

};


class SHIP:virtual public CRAFT{//关键字 virtual


protected:
double de;
public:
SHIP(double a,double b):CRAFT(a),de(b)
{cout<<"创建船(吃水: "<<de<<")"<<endl;}
~SHIP()
{cout<<"销毁船(吃水: "<<de<<")"<<endl;}
void Show(){
cout<<"航行(速度: "<<speed<<", 吃水: "<<de<<")"<<endl;
}
};


class SEAPLANE:public PLANE,public SHIP{//这里的是 public

    public:


SEAPLANE(double a,double b,double c):PLANE(a,b),SHIP(a,c),CRAFT(a)

//这里有CRAFT 的初始化


{
cout<<"创建水上飞机"<<endl;
}
~SEAPLANE()
{cout<<"销毁水上飞机"<<endl;}
void Show(){
cout<<"航行(速度: "<<PLANE::speed <<", 翼展: "<<wi<<", 吃水: "<<de<<")"<<endl;
}
};

 相似的例子在2020下 cpp课件Part_three One 部分