设有一个电梯类Elevator,包括私有数据成员:型号id和售价price。客梯类pElevator除了型号和售价外,还包括新增属性:最大载客数passenger_load·货梯类cElevator除了型号和售价外,还包括新增属性:最大载货重量cargo_load。客货两用类dElevator包含上述所有属性。编写一个程序,明确上述各类之间的继承关系,并能够求取单位载客/载重价格(数据自拟)。
时间: 2024-02-26 15:57:14 浏览: 22
好的,根据您的要求,我可以为您提供以下代码示例,来实现这个继承关系和单位载客/载重价格的计算:
```
#include <iostream>
using namespace std;
class Elevator {
private:
string id;
double price;
public:
Elevator(string id, double price) {
this->id = id;
this->price = price;
}
double getPrice() {
return price;
}
};
class pElevator : public Elevator {
private:
int passenger_load;
public:
pElevator(string id, double price, int passenger_load) : Elevator(id, price) {
this->passenger_load = passenger_load;
}
double getUnitPrice() {
return getPrice() / passenger_load;
}
};
class cElevator : public Elevator {
private:
double cargo_load;
public:
cElevator(string id, double price, double cargo_load) : Elevator(id, price) {
this->cargo_load = cargo_load;
}
double getUnitPrice() {
return getPrice() / cargo_load;
}
};
class dElevator : public pElevator, public cElevator {
public:
dElevator(string id, double price, int passenger_load, double cargo_load) : pElevator(id, price, passenger_load), cElevator(id, price, cargo_load), Elevator(id, price) {}
};
int main() {
dElevator elevator("123", 100000, 10, 500);
cout << "Unit passenger price: " << elevator.pElevator::getUnitPrice() << endl;
cout << "Unit cargo price: " << elevator.cElevator::getUnitPrice() << endl;
return 0;
}
```
在这个示例代码中,我们定义了一个 Elevator 类作为基类,pElevator 和 cElevator 类分别继承了 Elevator 类,并添加了各自的属性。dElevator 类则同时继承了 pElevator 和 cElevator 类。通过这种方式,我们可以实现客梯类、货梯类和客货两用类之间的继承关系。
另外,我们还定义了一个 getUnitPrice() 方法,用于计算单位载客/载重价格。在这个方法中,我们先调用基类的 getPrice() 方法获取售价,然后除以对应的载客数或载重量,得到单位价格。
最后,在主函数中,我们创建了一个 dElevator 对象,并调用其 pElevator::getUnitPrice() 和 cElevator::getUnitPrice() 方法,分别计算出单位载客价格和单位载重价格,并输出结果。
需要注意的是,在 dElevator 类中同时继承了 pElevator 和 cElevator 类时,可能会出现冲突,例如同名的属性或方法。为了避免这种情况,我们需要使用作用域解析运算符(::)来明确调用基类的方法。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)