阅读下列说明、图和C++代码,填补空缺。
[说明]
已知对某载客车辆(Car)进行类建模,如图12-2所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。
const int (1) =7; //定义最多载客数
const int MAX_WHEELS=5; //定义最多轮胎数
class Body{ //此处代码省略 ); //车身类
class Passenger{ //此处代码省略}; //乘客类
Class Wheel{ //此处代码省略}; //车轮类
Class Driver{ //司机类
public:
string name; //表示第几路公交车司机
Driver(string driverName):marne( (2) ){}; //构造函数
};
class Engine{ //引擎类
public:
string engineNo; //引擎编号
Engine(string engineNo){ (3) ->engineNo=engineNo; }
//构造函数
};
Class Car{ //汽车类
protected:
Engine *engine; Driver *driver; Body body;
Wheel *wheels[MAX_WHEELS]; Passenger *passengers[MAX_PASSENGERS];
public:
Car(Driver *driver)( //构造函数
this->driver=driver;
engine=new Engine("TX653 6型号引擎");
for(int index=0; index<MAX_WHEELS; index++){
wheels[index]=new Wheel( );
}
for(int index=0; index
}
}
virtual -Car( ){ //析构函数
for (int index=0; index<MAX_WHEELS; index++)
delete wheels[index];
delete (4) ;
}
int getPassengerNumber( ){ //获取车上乘客数量
//此处代码省略
}
void getonpassenger(Passenger *apassenger ){
//乘客上车
//此处代码省略
}
void run( ){ //开车
if(driver==NULL){cout<< "司机尚未上车!"; return; }
//此处代码省略
}
};
void main( ){
Driver driver("第五路公交车司机");
Car car( (5) );
Passenger passengers[MAX_PASSENGERS];
for(int index=0; index<MAX_PASSENGERS; index++)
//乘客上车处理
car. getOnPasSenger(&passengers[index]);
car. run( );
}
参考答案:&driver
解析: 根据类图描述,分析可得:一辆汽车可以载0~7名乘客,一辆汽车可以被一个或者多个司机驾驶,并且一辆汽车有4~5个轮胎,一个引擎和一个车框架。程序代码中空(1)处表示一辆汽车最多载客数目,从后面的程序代码分析可得,应该填写MAX_PASSENGERS。空(2)处用于构造一个司机对象,需要司机名称driverName作为参数。空(3)处主要设置车的假设司机,由于参数的名称与成员变量的名称相同,因此需要加上this以示区别。空(4)处所对应代码段是汽车car的析构函数,与car的构造函数相对应,需要将构造函数中创建的引擎和车轮删除,所以空(4)处应为删除引擎。空(5)处用于产生一个汽车对象,所以,需要给汽车对象传递合适的参数,构造方法中需要传递一个司机对象,因此应该将driver对象传递到汽车对象中。