原型模式和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();
转载于:https://www.cnblogs.com/jylz/p/10648439.html
原型模式和C++的拷贝构造函数有什么区别相关推荐
- 设计模式回顾——原型模式(C++)
文章目录 1 前言 2 什么是原型模式 2.1 原型模式组成 2.2 原型模式UML图 2.3 原型模式作用 3 原型模式优缺点 4 什么地方使用原型模式 5 原型模式实现 6 原型模式与构造函数 1 ...
- 原型模式-广告邮件推送
1. 广告邮件推送 现在大部分系统都有「发送邮件」的功能,系统可以通过邮件的方式给客户发送一些通知.消息提醒.广告推送的邮件. 其中,「广告邮件」比较特殊,它的邮件内容都是一样的,唯一不同的目标邮箱, ...
- 【原型模式】原型模式深入分析
文章目录 1. 原型模式 2.原型模式的应用场景 3. 原型模式的通用写法 3.1 先创建 IProtoType 接口 3.2 创建具体需要克隆的类 3.3 测试代码: 3.3.1 运行结果: 浅克隆 ...
- 使程序运行更高效——原型模式
1.原型模式介绍 原型模式是一个创建型的模式.原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的"克隆".被复制的实 ...
- 设计模式----原型模式
1 原型模式概念 1.1 介绍 原型模式是一个创建型的模式.原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的"克隆". ...
- 设计模式(三):传统模式VS简单原型模式及其优缺点
概念 原型模式是一个创建型的模式.用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象.原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效 ...
- 原型模式 与 建造者模式
一.原型模式 原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式. 原型模式的核心在于拷贝原型对象.以系统中已存在的一个对象 ...
- PHP 设计模式之原型模式
<?php // 1.与工厂模式类似,都是用来创建对象的 // 2.与工厂模式实现不同,原型模式是先创建好原型对象,然后通过 clone 原型对象来创建新的对象的.这样就避免了类创建时重复的初始 ...
- 设计模式-创建型模式:原型模式PrototypeModel
原型模式:不重复调用构造函数,在不通过构造函数的情况下,创建一个对象出来 通过克隆的方式创建对象,让整个程序使用的是不同的对象 应用案例:Sql局部更新 原型模式分为 浅表克隆和深表克隆 浅表克隆代码 ...
最新文章
- 微信小程序中的tabBar设置
- ERP成功全球实施十大成功案例
- mysql创建账号并赋予权限
- JetBrains - IDEA 常用快捷键汇总
- r语言 求几个数的最小公倍数_【微课】北师大版五年级数学上册第五单元8找最小公倍数...
- 知途云仓2.0 淘宝礼品一件代发php源码
- Spring如何保证线程安全
- 小白用Math对象随机生成一个名字
- 凯恩斯归来,大堡礁畅游记
- 养成良好的编程习惯-一个库一个文件夹
- 华为交换机端口配置流量统计
- 小米手机刷机为Linux,小米5 刷机LineageOS 14.1的详细教程
- 从Python爬虫到Spark预处理数据的真实需求[二]
- lua与c#交互篇 | 合理用好lua+unity,更省性能的方案整理
- 新富人群的快速壮大,急需金融在线直播提供更高效和广泛的服务
- 火山PC-安卓-易语言混合通讯教程(火山视窗)
- 9100cdn打印有色差_uv打印机出现色差的解决方法
- python 开发培训视频教程
- 2023商家外卖数据
- 推荐10个常用的国外BT种子下载网站
热门文章
- linux shell脚本判断文件行数,判断文件是否存在的shell脚本代码
- php左边按钮右边显示,右侧操作按钮
- php四则运算出题器_php实现简单四则运算器
- html转word 图片丢失 java_Java 设置 Word 文档中图片文字环绕方式
- android运营商获取本机号码_一键登录已成大势所趋,Android端操作指南来啦!
- MyBatis基础知识概述
- matlab二元方程组,用matlab解一个二元方程组,会的进,得到解再回答
- java切换jdk版本_切换JDK版本quick
- (DAG+固定终点的最长路和最短路)硬币问题
- python 子线程返回值_python-从线程返回值