阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。
【C++代码】#include<iostream>usingnamespacestd;classinvoice{public:(1){cout<<"Thisisthecontentoftheinvoice!"<<endl;}};classDecorator:publicinvoice{Invoice*ticket;public:Decorator(lnvoice*t){ticket=t;}voidprintinvoice(){if(ticket!=NULL)(2);}};classHeadDecorator:publicDecorator{public:HeadDecorator(lnvoice*t):Decorator(t){}voidprintinvoice0{cout<<"Thisistheheaderoftheinvoice!"<<endl;(3);}};classFootDecorator:publicDecorator{public:FootDecorator(invoice*t):Decorator(t){}voidprintlnvoice(){(4);cout<<"Thisisthefootnoteoftheinvoice!"<<endl;}};intmain(void){Invoicet;FootDecoratorf(&t);HeadDecoratorh(&f);H.printlnvoice();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 【解析】 试题分析 1.Invoice类下,义虛函数,按类图,函数名是printInvoice 2.前面定义对象名是ticket,那么在ticket不为空的时候调用函数printInvoice 3.这部分填写发票的抬头,看类图应该实现函数printInvoice ,Decorator装饰模式使用该方法 4.这部分是发票的脚注,看类图应该实现函数printlnvoice,Decorator装饰模式使用该方法 5.FootDecorator a(NULL) ;脚步的装饰参数是a,调用a参数,