#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;}