接某同学的提问继续提问。。。关于使用计数
原文:https://bbs.bccn.net/thread-334130-1-1.html5L的解释是:
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自加是为了防止自身赋值,那请问是怎么样防止的?
麻烦哪位大侠能够解释下
![](images/smilies/tk/tk09.gif)