9137阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。【说明】某应急交通控制系统5506

阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 某应急交通控制系统(TraficControISy ,tem)在红灯时控制各类车辆(Vehicle)的通 行,其类图如图5-1所示,在紧急状态下应急车辆红灯时也可通行,其余车辆按正常规 则通行。 下面的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 () { } }; Ciass Truck:public vehicie { 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 () { ret irn (4) ; } void runRedLight () { } }; class TraficControISystem {/*交通控制类*/ private : Vehicle*v[24]; int numVeh: cles./*在构造函数中设置初始值为0*/ public: void control(){ //控制在紧急情况下应急车辆红灯通行,其他情况按常规通行 for (int i = 0; i<[numVehicles;++] { Emergency*ev=dynamic_cast<Emergency*(v[i]); if (ev !=0(5)-: runRedLight () Else (6)-:run() } } Void add(vehicle){v[numvehicles++]=vehicle;} Void shutdown(){for (int i =0;i<numvehicles;i++){ deletev[i];} } } int main () { TraficControlSystem* tcs =new TraficControlSystem; tcs->add (new Car () );, t cs->add (new PoliceCar ()) ; tcs->add (new Ambulance ()) ; tcs- >add (new Ambulance (true)) ; tcs->add (new FireEngine (true)) ; -.cs->add (new FireEngine ()) ; tcs->add (new Truck ()) ; tcs->control () ; tcs->shul Down () ; delete tcs; } 请帮忙给出正确答案和分析,谢谢!

答案解析