水上飞机*

请设计以下航行器、飞机、船、水上飞机等4个类。

  • CRAFT类为航行器类,是公共基类,提供航行器的基本特性。包括:

    一个保护数据成员:speed(速度)。

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

  • PLANE类为飞机类,以公有方式继承CRAFT类,在航行器类的基础上增加飞机的特性。包括:

    一个保护数据成员:width(翼展)。

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

  • SHIP类为船类,以公有方式继承CRAFT类,在航行器类的基础上增加船的特性。包括:

    一个保护数据成员:depth(吃水深度)。

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

  • SEAPLANE类为水上飞机类,同时以公有方式继承PLANE类和SHIP类,兼具飞机和船的特性。包括:

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

  • 样例一
  • CRAFT *p;
    p = new CRAFT(87.2);
    p->Show();
    delete p;
    
    
    创建航行器(速度: 87.2)
    航行(速度: 87.2)
    销毁航行器(速度: 87.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)
    
  • 样例三
  • 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)
    

    测试程序

  • #include <iostream>
    using namespace std;
    
    /* 你提交的代码将被嵌在这里 */
    
    int main()
    {
        double s, w, d;
        CRAFT *p;
        cin >> s >> w >> d;
        p = new SEAPLANE(s, w, d);
        p->Show();
        delete p;
        return 0;
    }
    

    输入样例

  • 415.2  36.5   2.1
    输出样例

  • 创建航行器(速度: 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 s) {
    			speed = s;
    			cout << "创建航行器(速度: " << speed << ')' << endl;
    
    		}
    		virtual void Show() {
    			cout << "航行(速度: " << speed << ')' << endl;
    		}
    		virtual ~CRAFT() {
    			cout << "销毁航行器(速度: " << speed << ')' << endl;
    		}
    };
    
    class PLANE: virtual public CRAFT {
    	protected:
    		double width;
    	public:
    		PLANE(double s, double w): CRAFT(s), width(w) {
    			cout << "创建飞机(翼展: " << width << ')' << endl;
    		}
    		virtual ~PLANE() {
    			cout << "销毁飞机(翼展: " << width << ')' << endl;
    		}
    		virtual void Show() {
    			cout << "航行(速度: " << speed << ", 翼展: " << width << ')' << endl;
    		}
    };
    
    class SHIP: virtual public CRAFT {
    	protected:
    		double depth;
    	public:
    		SHIP(double s, double d): CRAFT(s), depth(d) {
    			cout << "创建船(吃水: " << depth << ')' << endl;
    		}
    		virtual void Show() {
    			cout << "航行(速度: " << speed << ", 吃水: " << depth << ')' << endl;
    		}
    		virtual ~SHIP() {
    			cout << "销毁船(吃水: " << depth << ')' << endl;
    		}
    };
    
    class SEAPLANE: public PLANE, public SHIP {/*这里继承的顺序要先PLANE再SHIP,才能得到输出样例的结果*/
    	public:
    		SEAPLANE(double s, double w, double d): CRAFT(s),  PLANE(s, w), SHIP(s, d) {
    			cout << "创建水上飞机" << endl;
    		}
    		virtual ~SEAPLANE() {
    			cout << "销毁水上飞机" << endl;
    		}
    		virtual void Show() {
    			cout << "航行(速度: " << speed << ", 翼展: " << width << ", 吃水: " << depth << ')' << endl;
    		}
    };

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值