PTA:车辆选择(继承)(c++,继承)

有一个汽车类vehicle,它具有一个需传递参数的构造函数,汽车类vehicle中的数据成员为:
车轮个数wheels和车重weight放在保护段中,汽车类vehicle中的公有成员函数为:get_wheels()(返回车轮个数的值)、get_weight()(返回车重的值)、wheel_load()(返回每个轮胎的载重量的值:weight/wheels)、print()(输出车轮的个数和车重的公斤数);
小车类car是vehicle类的派生类,它具有一个需传递参数的构造函数,小车类car中的私有数据成员为:车载人数passenger_load,小车类car中的公有成员函数为:get_passengers()(返回车载人数的值)、print()(输出小车车轮的个数和车重的公斤数以及车载人数的个数);
卡车类truck是vehicle类的派生类,它具有一个需传递参数的构造函数,卡车类truck中的私有数据成员为:载人数passenger_load和载重量payload,卡车类truck中的公有成员函数为:get_passengers()(返回车载人数的值)、efficiency()(返回卡车的载重效率的值:payload/(payload+weight)、print()(输出卡车车轮的个数和车重的公斤数以及车载人数的个数和卡车的载重效率的值))。
生成上述类并编写主函数,根据输入的车辆基本信息,建立车辆对象,并能计算输出该车辆的基本信息。
输入格式:测试输入包含一个测试用例,每一行给出一个车辆的基本信息,每行的第一个字符处为当前车辆的类型,第二个数字为当前车辆的编号,若车辆为vehicle,后面跟随两个数字分别为wheels和weight,若车辆为car,后面跟随三个数字分别为wheels,weight和车载人数,若车辆为truck,后面跟随四个数字分别是wheels,weight、车载人数和载重量。(以上数字均为整型)。-1表示输入结束,相应结果不要输出。请注意输出格式,按照输入顺序进行编号
说明:本题中轮胎载重量、载重效率若需输出保留小数点后两位。
输入样例:
vehicle 101 4 1900
car 201 4 2000 5
truck 301 6 3000 2 9000
car 202 4 1800 4
-1
输出样例:
The 1st object is Vehicle No. 101: weight 1900 Kg and wheels 4
The 2nd object is Car No. 201: passenger_load 5 weight 2000 Kg and wheels 4
The 3rd object is Truck No. 301: passenger_load 2 weight 3000 Kg wheels 6 and efficiency 0.75
The 4th object is Car No. 202: passenger_load 4 weight 1800 Kg and wheels 4

#include<bits/stdc++.h>
using namespace std;
class vehicle{
   
    protected:
    int wheels;
    double weight;
    public:
    vehicle(int a,double b):wheels(a),weight(b){
   };
    int get_wheels(){
   
        return wheels;
    }
    int get_weight(){
   
        return weight;
    }
    d
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题需要编写一个程序,它具有一个汽车类(vehicle),它需要一个需要传递参数的构造函数,类中的数据成员由数据成员包括:车轮数量(wheels)和车重(weight),并设置保护成员;小车类(car)是vehicle的子类,它是私有派生类,其中包括载客人数(pa)的成员变量。 ### 回答2: 要编写一个程序,我们需要先了解类和对象的概念。类是一组相似的对象的集合,它定义了对象的属性和方法。对象是具有特定状态和行为的实体,它是由类创建的。 我们需要创建一个汽车类,这个类具有车轮个数和车重这两个保护成员变量。保护成员只能在类及其子类中使用,但是不能在类的实例中访问。我们可以使用构造函数来传递车轮个数和车重这两个参数。 下一步,我们要创建一个小车类,这个类是汽车类的私有派生类。派生类可以继承父类的成员变量和方法。在小车类中,我们需要添加一个成员变量——载客人数。这个成员变量应该是私有的,以确保访问的安全性。 下面是一个示例程序,它演示了如何创建汽车类和小车类,并使用它们创建对象: ``` #include<iostream> using namespace std; class vehicle{ protected: int wheels; //车轮个数 int weight; //车重 public: vehicle(int w, int we): wheels(w), weight(we){} //构造函数,传递车轮个数和车重 }; class car:private vehicle{ //小车类是汽车类的私有派生类 private: int pa; //载客人数 public: car(int w, int we, int p): vehicle(w, we), pa(p){} //构造函数,包含车轮个数、车重、载客人数 void display(){ //显示信息 cout << "车轮个数:" << wheels << endl; cout << "车重:" << weight << endl; cout << "载客人数:" << pa << endl; } }; int main(){ car mycar(4, 1000, 5); //创建小车对象 mycar.display(); //调用display函数,显示对象信息 return 0; } ``` 在这个示例程序中,我们创建了一个vehicle类和一个car类。vehicle类具有两个保护成员变量——车轮个数和车重,并且它有一个带有两个参数的构造函数。car类是vehicle类的私有派生类,因此它可以访问vehicle类的成员变量。car类也有一个构造函数,它包含三个参数——车轮个数、车重和载客人数。display函数用于显示对象信息。 在main函数中,我们创建了一个名为mycar的car对象,并将4、1000和5作为参数传递给构造函数。然后我们调用display函数来显示对象信息,这些信息包括车轮个数、车重和载客人数。输出结果为: ``` 车轮个数:4 车重:1000 载客人数:5 ``` 这就是一个简单的程序,它演示了如何创建类和对象,并使用它们来实现一些常用的功能。当然,在实际应用中,我们需要更加复杂的代码来满足不同的需求。 ### 回答3: 这是一道面向对象的编程题目,需要用到C++或其他面向对象的编程语言。 首先,我们需要定义一个车辆类Vehicle,其中包含车轮个数和车重的数据成员,这两个数据成员都是保护成员,在类内外都可以被访问但是不能被直接修改。车辆类Vehicle还包含一个带参数的构造函数,用来初始化车轮个数和车重。 ```c++ class Vehicle { protected: int wheels; int weight; public: Vehicle(int w, int we): wheels(w), weight(we) {} }; ``` 然后,我们需要定义一个小车类Car作为Vehicle的私有派生类,其中包含载客人数的数据成员pa,这个数据成员是私有的,只能在类内部访问。小车类Car还应该包含一个带参数的构造函数,用来初始化车轮个数、车重和载客人数。 ```c++ class Car: private Vehicle { private: int pa; public: Car(int w, int we, int p): Vehicle(w, we), pa(p) {} }; ``` 在这个例子中,我们使用了“私有”的继承方式,这意味着不仅车辆类Vehicle的私有成员在小车类Car中不可见,它的保护成员也都会成为私有成员,只能在小车类内部访问。 最后,在主程序中,我们可以创建一个小车对象,调用其构造函数来初始化数据成员。我们可以打印出小车对象的车轮个数、车重和载客人数,验证其状态是否正确。 ```c++ int main() { Car myCar(4, 1000, 5); std::cout << "Wheels: " << myCar.wheels << std::endl; std::cout << "Weight: " << myCar.weight << std::endl; std::cout << "Passengers: " << myCar.pa << std::endl; return 0; } ``` 在上面的代码中,我们尝试访问小车对象的保护成员车轮个数和车重,发现无法编译通过,因为它们已经成为了私有成员。只有在小车类内部或者通过公有成员函数访问它们才是合法的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值