请设计以下汽车、客车、货车、客货两用车等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;
}
};