阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
以下C++代码实现两类交通工具(Flight和Train)的简单订票处理,类Vehicle、Flight、Train之间的关系如图6-1所示。

【C++代码】
#include <iostream>
#include <vector>
using namespace std;
class Vehicle{
public:
virtual ~Vehicle(){}
void book(int n){ //订n张票
if(getTicket() >= n){
decreaseTicket(n);
} else{
coutn“余票不足!!”;
}
}
virtual int getTicket()=0;
virtual void decreaseTicket(int)=0;
};
Class Flight: (1){
private:
(2)tickets;//Flight的票数
public:
int getTicket();
void decreaseTicket(int);
};
class Train: (3){
private:
(4)tickets; //Train的票数
public:
int getTicket();
void decreaseTicket(int);
};
int Train::tickets = 2016; //初始化Train的票数为2016
int Flight::tickets = 216; //初始化Flight的票数为216
int Train::getTicket() { return tickets;}
void Train::decreaseTicket(int n){ tickets=tickets - n;}
int Flight::getTicket(){return tickets; }
void Flight::decreaseTicket(int n) { tickets= tickets - n;}
int main() {
vector<Vehicle*> v;
v.push_back(new Flight());
v.push_back(new Train());
v;push_back(new Flight());
v.push_back(new Tram());
v.push_back(new Train());
cout《"欢迎订票!”《endl:
for (int i= 0;i<v.size(); i++) {
(5)(i+1); //订i+l张票
cout《“剩余票数:”<<(*V[i]).getTicket()<<endl;
}
for(vector<Vehicle*>::iterator it = v.begin(); it != v.end(); it ++) {
if (NULL !=*it) {
delete*it;
*it = NULL;
}
}
v.clear();
Return0;
}
运行该程序时输出如下:
欢迎订票!
剩余票数:215
剩余票数:2014
剩余票数:(6)
剩余票数:(7)
剩余票数:(8)


