阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。
【C++代码】
#include
<iostream>
using
namespacestd;
classInvoice{
public:
(1){
cout<<"Thisisthecontentofthe
invoice!"<<endl;
}
};
class
Decorator:publicInvoice{
Invoice*ticket;
public:
Decorator(lnvoice*t){ticket=t;}
voidprintInvoice(){
if(ticket!=NULL)
(2);
}
};
class
HeadDecorator:publicDecorator{
public:
HeadDecorator(lnvoice*t):Decorator(t){}
voidprintInvoice(){
cout<<"Thisisthe
headeroftheinvoice!"<<endl;
(3);
}
};
classFootDecorator:publicDecorator{
public:
FootDecorator(Invoice*t):Decorator(t){}
voidprintlnvoice(){
(4);
cout<<"Thisisthe
footnoteoftheinvoice!"<<endl;
}
};
intmain(void)
{
Invoicet;
FootDecoratorf(&t);
HeadDecoratorh(&f);
h.printInvoice();
cout<<”------------------------”<<endl;
FootDecoratora(NULL);
HeadDecoratorb((5));
b.printInvoice();
return0;
}
程序的输出结果为:
Thisistheheaderoftheinvoice!
Thisisthecontentoftheinvoice!
Thisisthefootnoteoftheinvoice!
----------------------------
Thisistheheaderoftheinvoice!
Thisisthefootnoteoftheinvoice!
(1) virtual void printInvoice() (2) ticket->printInvoice() (3) Decorator::printInvoice() (4) Decorator::printInvoice() (5) &a