#include <iostream>
using namespace std;
class software
{
public:
software(){}
virtual ~software(){}
virtual void exec()=0;
};
class game : public software
{
public:
game(){}
virtual ~game(){}
void exec(){cout<<"play game"<<endl;}
};
class office : public software
{
public:
office(){}
virtual ~office(){}
void exec(){cout<<"work office"<<endl;}
};
class computer
{
public:
computer():_instance(NULL){}
virtual ~computer(){}
void setsoftware(software *instance){_instance=instance;}
virtual void Exec()=0;
protected:
software *_instance;
};
class wincomputer : public computer
{
public:
wincomputer(){}
virtual ~wincomputer(){}
void Exec(){cout<<"win ";_instance->exec();}
};
class maccomputer : public computer
{
public:
maccomputer(){}
virtual ~maccomputer(){}
void Exec(){cout<<"mac ";_instance->exec();}
};
int main()
{
computer *pc=new wincomputer;
software *ps=new office;
pc->setsoftware(ps);
pc->Exec();
delete ps;
delete pc;
pc=new maccomputer;
ps=new game;
pc->setsoftware(ps);
pc->Exec();
delete ps;
delete pc;
system("pause");
return 0;
}
原文链接: https://www.cnblogs.com/tiandsp/archive/2012/06/25/2561172.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/53403
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!