class IOS { public: virtual IOS* Clone(void) const = 0; }; class CWinodowXP : public IOS { public: virtual IOS* Clone(void) const { return new CWinodowXP(*this);//用了默认的拷贝构造函数 } }; class CWindow7 : public IOS { public: virtual IOS* Clone(void) const { return new CWindow7(*this); } }; class CLinux : public IOS { public: virtual IOS* Clone(void) const { return new CLinux(*this); } }; int _tmain(int argc, _TCHAR* argv[]) { /*原型模式(Prototype) 当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。 原型模式允许你通过使用复制现有的实例来创建新的实例(在Java中,这通常意味着使用clone()方法或者反序列化)。 这个模式的重点在于,客户的代码在不知道要实例化何种特定类的情况下,可以制造出新的实例。*/ IOS* pWindow7 = new CWindow7; IOS* pOs = pWindow7->Clone(); delete pWindow7; delete pOs; return 0; }