正文

一道C++程序员的考题让我重新审视多态2006-11-11 22:20:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yuqiexing/20225.html

分享到:

班上一位同学参加了软考,问我这样一道题目,结果出乎我的意料:

class SalesTicket {
public:
 virtual void printTicket(){cout<<"\n这里是正文"<<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):Decorator(t){}
 void printTicket(){
  cout<<"\n这里是票据的抬头"<<endl;
  Decorator::printTicket();
 }
};


class FootDecorator:public Decorator{
public:
 FootDecorator(SalesTicket *t):Decorator(t){}
 void printTicket(){
  Decorator::printTicket();
  cout<<"\n这里是票据的脚注"<<endl;
 }
};


void main(void)
{
 SalesTicket t;
 FootDecorator f(&t);
    HeadDecorator h(&f);
 h.printTicket();
 cout<<"\n------------------------"<<endl;
 FootDecorator a(NULL);
 HeadDecorator b(&a);
 b.printTicket();

}

有兴趣的可以做一下啊,使你功力倍增

阅读(4935) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册