阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
某应急交通控制系统(TraficControlSystem)在红灯时控制各类车辆(Vehicle)的通行,其类图如下图所示,在紧急状态下应急车辆红灯时也可通行,其余车辆按正常规则通行。
下面的C++代码实现以上设计,请完善其中的空缺。
[C++代码]#include<typeinfo>#include<iostream>usingnamespacestd;classVehicle{/*抽象基类,车辆*/public:virtualvoidrun()=0;};classEmergency{/*抽象基类,可在红灯时通行的接口,函数均为纯虚函数*/public:______=0;//isEmergent()函数接口______=0;//runRedLight()函数接口};clasSCar:publicVehicle{public:~Car(){}voidrun(){/*代码略*/));classTruck:publicVehicle{public:~Truck(){}voidrun(){/*代码略*/});classPoliceCar:______{private:boolisEmergency;public:PoliceCar():Car(),Emergency(){this->isEmergency=false;}PoliceCar(boolb):Car(),Emergency(){this->isEmergency=b;}~P0liceCar(){}boolisEmergent(){return______}voidrunRedLight(){/*代码略*/});/*类Ambulance、FireEngine实现代码略*/classTraficControlsystem{/*交通控制类*/private:Vehicle*v[24];intnumVehicles;/*在构造函数中设置初始值为0*/public:voidcontrol(){//控制在紧急情况下应急车辆红灯通行,其他情况按常规通行for(inti=0;i<numVehicles;i++){Emergency*ev=dynamic_cast<Emergency*>(v[i]);if(ev!=0)______->runRedLight();else______->run();}}voidadd(Vehicle*vehicle){v[numVehicles++]=vehicle;}/*添加车辆*/voidshutDown(){for(inti=0;i<numVehicles;i++){deletev[i];}}};intmain(){TraficControlSystem*tcs=newTraficControlSystem;tcs->add(newCar());tcs->add(newPoliceCar());tcs->add(newAmbulance());tcs->add(newAmbulance(true));tcs->add(newFireEngine(true));tcs->add(newFireEngine());tcs->add(newTruck());tcs->contr01();tcs->ShutDown();deletetcs;}
virtual bool isEmergent() virtual void nmRedLight() public Car, public Emergency this->isEmergency ev v[i]