阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。

题库2022-08-02  41

问题 阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。       【说明】       某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】       #include<iostream>       using namespace std;       class invoice{       public:       (1){       cout<<"This is the content of the invoice!"<<endl;       }       };       class Decorator:public invoice{       Invoice*ticket;       public:       Decorator(lnvoice*t){ticket=t;}       void printinvoice(){       if(ticket!=NULL)       (2);       }       };       class HeadDecorator:public Decorator{       public:       HeadDecorator(lnvoice*t):Decorator(t){}       void printinvoice0{       cout<<"This is the header of the invoice!"<<endl;       (3);       }       };       class FootDecorator:public Decorator{       public:       FootDecorator(invoice*t):Decorator(t){}       void printlnvoice(){       (4);       cout<<"This is the footnote of the invoice!"<<endl;       }       };       int main(void){       Invoice t;       FootDecorator f(&t);       HeadDecorator h(&f);       H.printlnvoice();       cout<<“_____”<<endl;       FootDecorator a(NULL);       HeadDecorator b((5));       B.printinvoice();       return 0;       }       程序的输出结果为:       This is the header of the invoice!       This is the content of the invoice!       This is the footnote of the invoice!       ----------------------------       This is the header of the invoice!       This is the footnote of the invoice!

选项

答案

解析 (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参数,
转载请注明原文地址:https://tihaiku.com/congyezige/2424913.html

最新回复(0)