阅读以下说明和C++代码,填充程序中的空缺,将解答填入答题纸的对应栏内。
【说明】
某应急交通控制系统(TraficControlSystem)在红灯时控制各类车辆 (Vehicle)的通行,其类图如图5-1所示,在紧急状态下应急车辆在红灯时可通行,其余车辆按正常规则通行。
下面的C++代码实现以上设计,请完善其中的空缺。
【C++代码】
#include <typeinfo>
#include <iostream>
using namespace std;
class Vehicle { /*抽象基类,车辆*/
public:
virtual void run( ) = 0;
};
class Emergency { /*抽象基类,可在红灯时通行的接口,函数均为纯虚函数*/
public:
(1) = 0; // isEmergent ( )函数接口
(2) = 0; // runRedLight( ) 函数接口
};
class Car: public Vehicle {
public:
~Car ( ) { }
void run ( ) { /*代码略*/}
};
class Truck: public Vehicle {
public:
~Truck( ) { }
void run ( ) { /*代码略*/ }
};
class PoliceCar: (3) {
private:
bool isEmergency;
public:
PoliceCar( ) : Car( ) ,Emergency( ){ this->isEmergency = false;
}
PoliceCar(bool b) : Car( ) ,Emergency( ) { this->isEmergency = b;}
~policeCar ( ) { }
bool isEmergent ( ) { return (4) ; }
void runRedLight( ) { /*代码略*/ }
};
/*类Ambulance、 FireEngine 实现代码略*/
class TraficControlSystern { /*交通控制类*/
private:
Vehicle* v[24}; int nurnVeh:cles; /*在构造函数中设置初始值为0*/
public:
void control() { //控制在紧急情况下应急车辆红灯通行,其他情况按常规通行
for (int i = 0; i < numVehicles ; i++) {
Emergency * ev = dynamic_cast<Emergency*>(v[i]);
if (ev != 0) (5) ->runRedLight () ;
else (6) ->run () ;
}
}
void add(Vehicle * vehicle) { v[numVehicles++] = vehicle;
/ *添加车辆./
void shutDown() { for (int i = 0; i < numVehicles; i++) { delete
v[i]; } }
} ;
int main( ) {
TraficControlSystern. tcs = new TraficControlSystern;
tcs->add(new Car( )); tcs->add(new PoliceCar( ));
tcs->add(new Ambulance( ));tcs->add(new Ambulance(true));
tcs->add(new FireEngine(true)); tcs->add(new FireEngine( ));
tcs->add(new Truck( ));
tcs->control( ); tcs->shutDown( );
delete tcs;
}