二、 有一个汽车类vehicle,它具有一个需要传递参数的构造函数,类中的数据成员包括:车轮个数wheels和车重weight作为保护成员;小车类car是它的私有派生类,其中包含载人数passengers;卡车类truck是vehicle的私有派生类,其中包含载人数passensers和载重量payload;每个类中有相应的输出函数,输出函数名见主函数。执行并输出结果。 主函数如下: int main() { vehicle obj1(4,4); cout<<"vehicle information:"<<endl; obj1.display (); car obj2(4,2,5); cout<<endl<<"car information:"<<endl; obj2.display(); truck obj3(8,6,2,20); cout<<endl<<"truck information:"<<endl; obj3.display (); return 0; }
时间: 2023-10-30 13:16:39 浏览: 144
好的,我理解了你的问题。下面是代码和输出结果:
```cpp
#include <iostream>
using namespace std;
class vehicle {
protected:
int wheels;
int weight;
public:
vehicle(int w, int we): wheels(w), weight(we) {}
void display() {
cout << "Number of wheels: " << wheels << endl;
cout << "Weight of vehicle: " << weight << " tons" << endl;
}
};
class car : private vehicle {
private:
int passengers;
public:
car(int w, int we, int p): vehicle(w, we), passengers(p) {}
void display() {
vehicle::display(); // call base class display() function
cout << "Number of passengers: " << passengers << endl;
}
};
class truck : private vehicle {
private:
int passengers;
int payload;
public:
truck(int w, int we, int p, int pay): vehicle(w, we), passengers(p), payload(pay) {}
void display() {
vehicle::display(); // call base class display() function
cout << "Number of passengers: " << passengers << endl;
cout << "Payload capacity: " << payload << " tons" << endl;
}
};
int main() {
vehicle obj1(4,4);
cout<<"vehicle information:"<<endl;
obj1.display ();
car obj2(4,2,5);
cout<<endl<<"car information:"<<endl;
obj2.display();
truck obj3(8,6,2,20);
cout<<endl<<"truck information:"<<endl;
obj3.display ();
return 0;
}
```
输出结果:
```
vehicle information:
Number of wheels: 4
Weight of vehicle: 4 tons
car information:
Number of wheels: 4
Weight of vehicle: 2 tons
Number of passengers: 5
truck information:
Number of wheels: 8
Weight of vehicle: 6 tons
Number of passengers: 2
Payload capacity: 20 tons
```
在以上代码中,我们定义了一个基类 `vehicle`,它有两个保护成员 `wheels` 和 `weight`,并且有一个需要传递参数的构造函数。然后我们定义了一个私有派生类 `car`,其中包含了一个额外的成员变量 `passengers`,同样有一个需要传递参数的构造函数。我们还定义了另一个私有派生类 `truck`,它除了继承了 `vehicle` 的成员之外,还有一个额外的成员变量 `payload`。
在 `main()` 函数中,我们创建了一个 `vehicle` 对象 `obj1`,一个 `car` 对象 `obj2`,以及一个 `truck` 对象 `obj3`。然后我们调用了它们各自的 `display()` 函数,输出它们的信息。
需要注意的是,在 `car` 和 `truck` 类中,我们使用了 `vehicle::display()` 这样的语法,来调用基类 `vehicle` 中的 `display()` 函数,因为这两个类都是私有派生类,无法直接访问基类的成员函数。
阅读全文