问答题 试题六(共 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
【答案解析】