原型模式和C++的拷貝構造函數有什么區別


都是基於個人理解,本文是為了幫助記憶。

相同點:原型模式和拷貝構造函數都是要產生對象的復制品。

不同點:原型模式實現的是一個clone接口,注意是接口,也就是基於多態的clone虛函數。也就是說原型模式能夠通過基類指針來復制派生類對象。拷貝構造函數完不成這樣的任務。

               原型模式的核心是克隆,構造函數只是克隆的一個辦法而已。

class base
{
  public : 
  base();
  base(base &obj);
  virtual  ~base();
  virtual base *clone() { return new base(*this) ; };
};
class derived : public base
{
  public : 
  derived();
  derived(  derived &);
 virtual base *clone(){return new derived (*this); }
....
};

base *obj1 = new base ; 
base *obj2 = new derived ;
base *obj3 = obj1 .clone();
base *obj4 = obj12.clone();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM