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