| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 349 人关注过本帖
标题:接某同学的提问继续提问。。。关于使用计数
取消只看楼主 加入收藏
qq51099008
Rank: 1
等 级:新手上路
帖 子:16
专家分:8
注 册:2011-8-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
接某同学的提问继续提问。。。关于使用计数
原文:https://bbs.bccn.net/thread-334130-1-1.html

5L的解释是:
char *p=new char[20];
char *q=new char[20];
HasPtr a(p,0);
HasPtr b(q,0);
a=b;//看这句,会调用赋值重载,那么a所指的对内存是不是要释放呢,你若不调用delete 怎么释放呢,调用函数时b的计数+1,a的-1,那么a.ptr->use为0了调用析构函数释放内存,
若有这样一句,a=a;//这个就是自身赋值了,只有这种情况下,在重载+中用delete 后面的三句才不会有问题的。因为堆中的内存还有对象在使用。、、我也不知道你明白了没。

=========
图片附件: 游客没有浏览图片的权限,请 登录注册

1.if语句中是如果use==0了就调用析构函数释放,那么如果自减之后依然不是0呢,就不会调用析构函数,但是依然会执行后面的prt=rhs.ptr。。。有什么意思?

2.还有截图上说的先让rhs.ptr自加是为了防止自身赋值,那请问是怎么样防止的?

麻烦哪位大侠能够解释下
2011-08-04 17:32
qq51099008
Rank: 1
等 级:新手上路
帖 子:16
专家分:8
注 册:2011-8-4
收藏
得分:0 
回复 3楼 specilize
我全看懂了!! 你忒厉害了  这离你当时的提问才几个月,就把这些讲得这么透彻,佩服!
2011-08-04 23:16
快速回复:接某同学的提问继续提问。。。关于使用计数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016380 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved