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面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
php 面向对象的一个例子
Apr 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
隐性调用php程序的方法
Jun 13 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 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+MySql编写聊天室
2006/10/09 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python 创建一维的0向量实例
2019/12/02 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
旅游节目策划方案
2014/05/26 职场文书
中队活动总结
2014/08/27 职场文书
民事赔偿协议书
2014/11/02 职场文书
付款证明模板
2015/06/19 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
vue使用watch监听属性变化
2022/04/30 Vue.js
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android