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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
PHP用户指南-cookies部分
Oct 09 PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
php程序之die调试法 快速解决错误
Sep 17 PHP
php在线代理转向代码
May 05 PHP
php调用google接口生成二维码示例
Apr 28 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 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采集利器 Snoopy 试用心得
2011/07/03 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Django Celery异步任务队列的实现
2019/07/24 Python
django的ORM操作 增加和查询
2019/07/26 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
应届毕业生求职信范例分享
2013/12/17 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年终个人总结报告
2015/03/09 职场文书
失恋33天观后感
2015/06/11 职场文书
工作经历证明范本
2015/06/15 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python