php中拷贝构造函数、赋值运算符重载


Posted in PHP onJuly 25, 2012

对象的赋值与复制: 赋值:通过“ = ”运算符重载
User a(10),b;
b = a;
复制:调用复制构造函数
User b;
User a(b);
或者
User a = b;//相当于User a(b);
与赋值的区别,赋值是对一个已经存在的对象进行赋值(已经实现定义了被赋值的对象),而复制是从无到有建立一个新的对象,并使它与已有的对象相同。
浅复制与深复制: 若对象中有指针成员,在复制时,只会将该指针成员的地址复制给新建立的对象,因此,两个对象中的指针成员都指向了同一块内存区域,在释放时会出现重复释放的问题。 需要手动定义复制构造函数,在构造函数中将为指针变量分配新的内存,是不同对象的指针成员指向不同的内存区域。
用到拷贝构造函数的三种情况: 1、需要建立一个新对象,并用另一个同类对象对其进行初始化 2、函数的参数为类的对象时,在调用函数时需要建立一个实参的拷贝,按实参复制一个形参,系统是通过调用拷贝构造函数实现的 3、函数的返回值是类的对象:函数调用结束时,需要将函数中的对象复制一个临时对象,并传给该函数的调用处。

User getUser()
{  
User temp;  
return temp;
}
int main()
{  
User user = getUser();//调用getUser();
}

getUser()函数调用结束时,getUser中建立的对象temp的生命周期结束(即将销毁),所以不是将temp带回main,而是在执行return语句时,调用User类的拷贝构造函数,按temp拷贝一个新的、对象,然后将它赋值给user.
PHP 相关文章推荐
写出高质量的PHP程序
Feb 04 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
php实现的二分查找算法示例
Jun 20 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
Jul 23 #PHP
php 调试利器debug_print_backtrace()
Jul 23 #PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 #PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 #PHP
php中的一些数组排序方法分享
Jul 20 #PHP
xml在joomla表单中的应用详解分享
Jul 19 #PHP
ajax在joomla中的原生态应用代码
Jul 19 #PHP
You might like
浅析PHP Socket技术
2013/08/02 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
php文件包含的几种方式总结
2019/09/19 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
json数据的列循环示例
2013/09/06 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Python实现的桶排序算法示例
2017/11/29 Python
python简单商城购物车实例代码
2018/03/15 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
德国网上药房:Apotal
2017/04/04 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
党员自我批评与反省材料
2014/02/10 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
三八节主持词
2014/03/17 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
上班迟到检讨书
2014/09/15 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang