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 checkbox复选框值的获取与checkbox默认值输出方法
May 15 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
mac下安装nginx和php
Nov 04 PHP
在win7中搭建Linux+PHP 开发环境
Oct 08 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
CI框架整合smarty步骤详解
May 19 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
PHP常用的三种设计模式
Feb 17 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 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数据 实现代码
2009/06/15 PHP
php smarty函数扩展
2010/03/15 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
详解Python中的Cookie模块使用
2015/07/06 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
对Python3 序列解包详解
2019/02/16 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
应用服务器有那些
2012/01/19 面试题
Linux的主要特性
2014/10/06 面试题
2015年幼儿园安全工作总结
2015/05/12 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android