都是基于个人理解,本文是为了帮助记忆。

相同点:原型模式和拷贝构造函数都是要产生对象的复制品。

不同点:原型模式实现的是一个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();

转载于:https://www.cnblogs.com/jylz/p/10648439.html

原型模式和C++的拷贝构造函数有什么区别相关推荐

  1. 设计模式回顾——原型模式(C++)

    文章目录 1 前言 2 什么是原型模式 2.1 原型模式组成 2.2 原型模式UML图 2.3 原型模式作用 3 原型模式优缺点 4 什么地方使用原型模式 5 原型模式实现 6 原型模式与构造函数 1 ...

  2. 原型模式-广告邮件推送

    1. 广告邮件推送 现在大部分系统都有「发送邮件」的功能,系统可以通过邮件的方式给客户发送一些通知.消息提醒.广告推送的邮件. 其中,「广告邮件」比较特殊,它的邮件内容都是一样的,唯一不同的目标邮箱, ...

  3. 【原型模式】原型模式深入分析

    文章目录 1. 原型模式 2.原型模式的应用场景 3. 原型模式的通用写法 3.1 先创建 IProtoType 接口 3.2 创建具体需要克隆的类 3.3 测试代码: 3.3.1 运行结果: 浅克隆 ...

  4. 使程序运行更高效——原型模式

    1.原型模式介绍 原型模式是一个创建型的模式.原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的"克隆".被复制的实 ...

  5. 设计模式----原型模式

    1 原型模式概念 1.1 介绍 原型模式是一个创建型的模式.原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的"克隆". ...

  6. 设计模式(三):传统模式VS简单原型模式及其优缺点

    概念 原型模式是一个创建型的模式.用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象.原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效 ...

  7. 原型模式 与 建造者模式

    一.原型模式 原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式. 原型模式的核心在于拷贝原型对象.以系统中已存在的一个对象 ...

  8. PHP 设计模式之原型模式

    <?php // 1.与工厂模式类似,都是用来创建对象的 // 2.与工厂模式实现不同,原型模式是先创建好原型对象,然后通过 clone 原型对象来创建新的对象的.这样就避免了类创建时重复的初始 ...

  9. 设计模式-创建型模式:原型模式PrototypeModel

    原型模式:不重复调用构造函数,在不通过构造函数的情况下,创建一个对象出来 通过克隆的方式创建对象,让整个程序使用的是不同的对象 应用案例:Sql局部更新 原型模式分为 浅表克隆和深表克隆 浅表克隆代码 ...

最新文章

  1. 微信小程序中的tabBar设置
  2. ERP成功全球实施十大成功案例
  3. mysql创建账号并赋予权限
  4. JetBrains - IDEA 常用快捷键汇总
  5. r语言 求几个数的最小公倍数_【微课】北师大版五年级数学上册第五单元8找最小公倍数...
  6. 知途云仓2.0 淘宝礼品一件代发php源码
  7. Spring如何保证线程安全
  8. 小白用Math对象随机生成一个名字
  9. 凯恩斯归来,大堡礁畅游记
  10. 养成良好的编程习惯-一个库一个文件夹
  11. 华为交换机端口配置流量统计
  12. 小米手机刷机为Linux,小米5 刷机LineageOS 14.1的详细教程
  13. 从Python爬虫到Spark预处理数据的真实需求[二]
  14. lua与c#交互篇 | 合理用好lua+unity,更省性能的方案整理
  15. 新富人群的快速壮大,急需金融在线直播提供更高效和广泛的服务
  16. 火山PC-安卓-易语言混合通讯教程(火山视窗)
  17. 9100cdn打印有色差_uv打印机出现色差的解决方法
  18. python 开发培训视频教程
  19. 2023商家外卖数据
  20. 推荐10个常用的国外BT种子下载网站

热门文章

  1. linux shell脚本判断文件行数,判断文件是否存在的shell脚本代码
  2. php左边按钮右边显示,右侧操作按钮
  3. php四则运算出题器_php实现简单四则运算器
  4. html转word 图片丢失 java_Java 设置 Word 文档中图片文字环绕方式
  5. android运营商获取本机号码_一键登录已成大势所趋,Android端操作指南来啦!
  6. MyBatis基础知识概述
  7. matlab二元方程组,用matlab解一个二元方程组,会的进,得到解再回答
  8. java切换jdk版本_切换JDK版本quick
  9. (DAG+固定终点的最长路和最短路)硬币问题
  10. python 子线程返回值_python-从线程返回值