客货两用车*

请设计以下汽车、客车、货车、客货两用车等4个类。

CAR 为汽车类,是公共基类,提供汽车的基本功能。包括:

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

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

BUS 为客车类,以公有方式继承 CAR 类,在汽车类的基础上增加客运功能。包括:

一个保护数据成员:seat(载客量)。

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

TRUCK 为货车类,以公有方式继承 CAR 类,在汽车类的基础上增加货运功能。包括:

一个保护数据成员:load(载货量)。

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

VAN 为客货两用车类,同时以公有方式继承 BUS 类和 TRUCK 类,兼具客运和货运功能。包括:

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

测试用例
样例一
CAR *p;
p = new CAR(25.3);
p->Show();
delete p;
创建汽车(25.3公里/小时)
汽车: 25.3公里/小时
销毁汽车(25.3公里/小时)
样例二
CAR *p;
p = new BUS(58.5, 45);
p->Show();
delete p;
创建汽车(58.5公里/小时)
创建客车(45人)
客车: 58.5公里/小时, 45人
销毁客车(45人)
销毁汽车(58.5公里/小时)
样例三
CAR *p;
p = new TRUCK(208.5, 350.8);
p->Show();
delete p;
创建汽车(208.5公里/小时)
创建货车(350.8吨)
货车: 208.5公里/小时, 350.8吨
销毁货车(350.8吨)
销毁汽车(208.5公里/小时)
样例四
CAR *p;
p = new VAN(125.6, 5, 2.5);
p->Show();
delete p;
创建汽车(125.6公里/小时)
创建客车(5人)
创建货车(2.5吨)
创建客货两用车
客货两用车: 125.6公里/小时, 5人, 2.5吨
销毁客货两用车
销毁货车(2.5吨)
销毁客车(5人)
销毁汽车(125.6公里/小时)
裁判程序
#include <iostream>
using namespace std;

/* 你提交的代码将被嵌在这里 */

int main()
{
    CAR *p;
    double s, t, w;
    cin >> s, t, w;
    p = new VAN(s, t, w);
    p->Show();
    delete p;
    return 0;
}
输入样例
80.5 6 1.2

输出样例
创建汽车(80.5公里/小时)
创建客车(6人)
创建货车(1.2吨)
创建客货两用车
客货两用车: 80.5公里/小时, 6人, 1.2吨
销毁客货两用车
销毁货车(1.2吨)
销毁客车(6人)
销毁汽车(80.5公里/小时)

#include <iostream>
using namespace std;

class CAR {
protected:
    double speed;

public:
    CAR(double s) : speed(s) {
        cout << "创建汽车(" << speed << "公里/小时)" << endl;
    }
    virtual ~CAR() {
        cout << "销毁汽车(" << speed << "公里/小时)" << endl;
    }
    virtual void Show() const {
        cout << "汽车: " << speed << "公里/小时" << endl;
    }
};

class BUS : virtual public CAR {
protected:
    double seat;

public:
    BUS(double s, double se) : CAR(s), seat(se) {
        cout << "创建客车(" << seat << "人)" << endl;
    }
    ~BUS() override {
        cout << "销毁客车(" << seat << "人)" << endl;
    }
    void Show() const override {
        cout << "客车: " << speed << "公里/小时, " << seat << "人" << endl;
    }
};

class TRUCK : virtual public CAR {
protected:
    double load;

public:
    TRUCK(double s, double l) : CAR(s), load(l) {
        cout << "创建货车(" << load << "吨)" << endl;
    }
    ~TRUCK() override {
        cout << "销毁货车(" << load << "吨)" << endl;
    }
    void Show() const override {
        cout << "货车: " << speed << "公里/小时, " << load << "吨" << endl;
    }
};

class VAN : public BUS, public TRUCK {
public:
    VAN(double s, double se, double l) : CAR(s), BUS(s, se), TRUCK(s, l) {
        cout << "创建客货两用车" << endl;
    }
    ~VAN() override {
        cout << "销毁客货两用车" << endl;
    }
    void Show() const override {
        cout << "客货两用车: " << speed << "公里/小时, " << seat << "人, " << load << "吨" << endl;
    }
};

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值