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中使用Sockets 从Usenet中获取文件
Jan 10 PHP
php 无极分类(递归)实现代码
Jan 05 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
浅析Python中的多重继承
2015/04/28 Python
Python回调函数用法实例详解
2015/07/02 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
python代码过长的换行方法
2018/07/19 Python
python实现弹窗祝福效果
2019/04/07 Python
python程序控制NAO机器人行走
2019/04/29 Python
pytorch 修改预训练model实例
2020/01/18 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
Python 可视化神器Plotly详解
2020/12/26 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
高三历史教学反思
2014/01/09 职场文书
仓库管理制度
2014/01/21 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
安徽导游词
2015/02/12 职场文书
入党转正申请书范文
2019/05/20 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android