#include <iostream>
using namespace std;
// 定义抽象类 Express
class Express {
private:
int weight;
public:
// 构造函数
Express(int w) {
weight = w;
}
// 获得重量
int getWeight() { return weight; }
// 计算费用
virtual int getTotal() = 0;
};
// 继承抽象类 Express 的 SLExpress
class SLExpress : public Express {
public:
// 构造函数
SLExpress(int w) : Express(w) {}
// 实现父类的纯虚函数 getTotal
int getTotal()
{
int total = 12 + (getWeight() - 1) * 2;
return total;
}
};
// 继承抽象类 Express 的 DDExpress
class DDExpress : public Express {
public:
// 构造函数
DDExpress(int w) : Express(w) {}
// 实现父类的纯虚函数 getTotal
int getTotal()
{
int total = 5 + (getWeight() - 1);
return total;
}
};
int main() {
int n, w;
string type;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> type >> w;
Express *p;
if (type == "SL") {
p = new SLExpress(w);
cout << "SLExpress:" << p->getTotal() << endl;
} else if (type == "DD") {
p = new DDExpress(w);
cout << "DDExpress:" << p->getTotal() << endl;
}
}
return 0;
}
运行结果