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基础知识回顾
Aug 16 PHP
php中opendir函数用法实例
Nov 15 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
Yii实现显示静态页的方法
Apr 25 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
设定php简写功能的方法
Nov 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常用数组函数介绍
2014/07/28 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
全面分析Python的优点和缺点
2018/02/07 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
文明礼仪伴我行演讲稿
2014/05/12 职场文书
公证委托书
2014/08/01 职场文书
党代会心得体会
2014/09/04 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
实习证明格式范文
2014/10/14 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers