问答题
试题六(共 15 分)
阅读以下说明和C++程序代码,将应填入(n) 处的字句写在答题纸的对应栏内。
[说明]
在下面的C++代码中,类SalesTicket 能够完成打印票据正文的功能,类HeadDecorator 与FootDecorator 分别完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据正文!
这是票据的脚注!
------------------------
这是票据的台头!
这是票据的脚注!
[C++程序代码]
#include
using namespace std;
class SalesTicket {
public:
(1) printTicket() { cout << "这是票据正文!" << endl;}
};
class Decorator : public SalesTicket{
SalesTicket *ticket;
public:
Decorator(SalesTicket *t){ ticket = t; }
void printTicket(){
if(ticket != NULL)
ticket->printTicket();
}
};
class HeadDecorator : public Decorator{
public:
HeadDecorator(SalesTicket *t): (2) { }
void printTicket() {
cout << "这是票据的台头!" << endl;
Decorator::printTicket();
}
};
class FootDecorator :public Decorator{
public:
FootDecorator(SalesTicket *t): (3) { }
void printTicket() {
Decorator::printTicket();
cout << "这是票据的脚注!" << endl;
}
};
void main(void) {
SalesTicket t;
FootDecorator f(&t);
HeadDecorator h( (4) );
h.printTicket();
cout << "------------------------"<< endl;
FootDecorator a(NULL);
HeadDecorator b( (5) );
b.printTicket();
}
【正确答案】(1) virtual void
(2) Decorator(t)
(3) Decorator(t)
(4) &f
(5) &a
【答案解析】