用C++编写一个程序设计一个汽车类 vehicle,包含的数据成员有车名:name,车轮个数:wheels,车重:weight,排量:delivery_capacity,最高速度:max_speed。小车类 car 是它的私有派生类,其中包含载人数 passenger_load。卡车类 truck 是 vehicle 的私有派生类,其中包含载人数 passenger_load 和载重量 payload,每个类都有相关数据的输出方法。 指导: 基类 vehicle 包含数据成员:name(车名)、wheels、(车轮个数)、weight(车重)、 delivery_capacity(排量)和 max_speed(最高速度),成员函数:初始化数据成员的构造函数 vehicle()、获得车轮个数的成员函数 get_wheels()、获得车重的成员函数 get_weight()、输出数据的成员函数 show()。 由它派生出 car 类和 truck 类,将公共的属性和方法放在 vehicle 类中。为了避免在类外通过对象访问这些公共属性,但是还希望在派生类中可以访问这些属性,将其定义为保护 protected 属性。 派生类 car 新增了 1 个数据成员 passenger_load(载人数)和 3 个成员函数,构造函数 car()、获得载人数的成员函数 get_passengers()、输出数据的成员函数 show()。 派生类 truck 新增了 2 个数据成员 passenger_load(载人数)、payload(载重量)和 4 个成员函数,构造函数 truck ()、获得载人数的成员函数 get_passengers()、获得载重量的成员函数 get_payload()、输出数据的成员函数 show()。
时间: 2024-03-23 14:36:19 浏览: 174
好的,以下是C++代码实现:
```
#include <iostream>
using namespace std;
class vehicle {
protected:
string name;
int wheels;
float weight;
float delivery_capacity;
float max_speed;
public:
vehicle(string n, int w, float we, float dc, float ms) {
name = n;
wheels = w;
weight = we;
delivery_capacity = dc;
max_speed = ms;
}
int get_wheels() {
return wheels;
}
float get_weight() {
return weight;
}
void show() {
cout << "Name: " << name << endl;
cout << "Wheels: " << wheels << endl;
cout << "Weight: " << weight << endl;
cout << "Delivery Capacity: " << delivery_capacity << endl;
cout << "Max Speed: " << max_speed << endl;
}
};
class car : protected vehicle {
private:
int passenger_load;
public:
car(string n, int w, float we, float dc, float ms, int pl) : vehicle(n, w, we, dc, ms) {
passenger_load = pl;
}
int get_passengers() {
return passenger_load;
}
void show() {
vehicle::show();
cout << "Passenger Load: " << passenger_load << endl;
}
};
class truck : protected vehicle {
private:
int passenger_load;
float payload;
public:
truck(string n, int w, float we, float dc, float ms, int pl, float pay) : vehicle(n, w, we, dc, ms) {
passenger_load = pl;
payload = pay;
}
int get_passengers() {
return passenger_load;
}
float get_payload() {
return payload;
}
void show() {
vehicle::show();
cout << "Passenger Load: " << passenger_load << endl;
cout << "Payload: " << payload << endl;
}
};
int main() {
car my_car("Toyota", 4, 1500, 2.0, 200, 5);
my_car.show();
truck my_truck("Volvo", 6, 5000, 4.0, 120, 2, 5000);
my_truck.show();
return 0;
}
```
以上代码中,vehicle 类是汽车类的基类,包含车名、车轮个数、车重、排量和最高速度等属性,以及构造函数、获取车轮个数、获取车重和输出数据的成员函数。
car 类是 vehicle 类的私有派生类,新增了载人数属性和构造函数、获取载人数和输出数据的成员函数。
truck 类是 vehicle 类的私有派生类,新增了载人数和载重量属性和构造函数、获取载人数、获取载重量和输出数据的成员函数。
在 main 函数中,我们创建了 car 和 truck 类的对象,并调用它们的输出数据方法,以验证实现的正确性。
阅读全文