刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

 

阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
某应急交通控制系统(TraficControlSystem)在红灯时控制各类车辆(Vehicle)的通行,其类图如下图所示,在紧急状态下应急车辆红灯时也可通行,其余车辆按正常规则通行。

类图
下面的C++代码实现以上设计,请完善其中的空缺。

[C++代码]
#include<typeinfo>
#include<iostream>
using namespace std;
class Vehicle {/*抽象基类,车辆*/
public:
virtual void run()=0;
};
class Emergency {  /*抽象基类,可在红灯时通行的接口,函数均为纯虚函数*/
public:
______=0;    //isEmergent()函数接口
______=0;    //runRedLight()函数接口
};
clasS Car:public Vehicle{
public:
~Car(){}
void run(){/*代码略*/  )
);
class Truck:public Vehicle{
public:
~Truck(){}
void run(){  /*代码略*/  }
);
class PoliceCar:______ {
private:
bool isEmergency;
public:
PoliceCar():Car(),Emergency() { this->isEmergency=false;
}
PoliceCar(bool b):Car(),Emergency()  {this->isEmergency=b;}
~P0liceCar(){    }
bool isEmergent(){    return ______}
void runRedLight()  {    /*代码略*/    }
);
/*类Ambulance、FireEngine实现代码略*/
class TraficControlsystem {  /*交通控制类*/
private:
Vehicle*v[24];    int numVehicles;/*在构造函数中设置初始值为0*/
public:
void control(){  //控制在紧急情况下应急车辆红灯通行,其他情况按常规通行
for(int i=0;i<numVehicles; i++){
Emergency *ev=dynamic_cast<Emergency*>(v[i]);
if(ev !=0)  ______->runRedLight();
else ______->run();
}
}
void add(Vehicle*vehicle) { v[numVehicles++] =vehicle; }
/*添加车辆*/
void shutDown() {for(int i=0;  i<numVehicles; i++) { delete v[i];}  }
};
int main(){
TraficControlSystem*tcs=new  TraficControlSystem;
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->contr01();tcs->ShutDown();
delete tcs;
}

 

使用微信搜索喵呜刷题,轻松应对考试!

答案:

 

 

virtual bool isEmergent()
virtual void nmRedLight()
public Car, public Emergency
this->isEmergency
ev
v[i]

 

解析:

根据题目描述和类图设计,填充C++代码中的空缺如下:

  1. 在Emergency类的定义中,isEmergent()和runRedLight()是纯虚函数,因此填写为:
virtual bool isEmergent() = 0;
virtual void runRedLight() = 0;
  1. PoliceCar类继承自Car和Emergency,因此填写为:
public Car, public Emergency
  1. 在PoliceCar类的isEmergent()函数中,返回对象的状态,即this->isEmergency,因此填写为:
this->isEmergency
  1. 在TraficControlSystem类的control()函数中,动态转换成功的对象ev可以调用runRedLight(),否则调用v[i]->run(),因此空(5)和空(6)处分别填写为:
ev->runRedLight();
v[i]->run();
创作类型:
原创

本文链接:  阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。[说明]某应急交通控制系

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share