64,639
社区成员
发帖
与我相关
我的任务
分享
HasPtr &HasPtr::operator=(const HasPtr &rhs) ///注意,这里赋值操作符在减少做操作数的使用计数之前使rhs的使用技术加1,从而防止自我赋值
{
///增加右操作数中的使用计数
++rhs.ptr->use;
///将左操作数对象的使用计数减1,若该对象的使用计数减至0,则删除该对象
if(--ptr->use == 0) delete ptr;
ptr = rhs.ptr; ///复制U_Ptr指针
val = rhs.val; ///复制int成员
return *this;
}
///增加右操作数中的使用计数
++rhs.ptr->use;
就会执行
if(--ptr->use == 0) delete ptr;
就把自己给删掉了,