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