原型模式和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();

猜你喜欢

转载自www.cnblogs.com/jylz/p/10648439.html