if ( --ptr->use == 0 ){ //【【这句什么意思????】】】
delete ptr;
}
ptr->use 是用来记录智能指针所对应的真实指针被多少个智能指针给使用了。
比如这个赋值操作符中第一句++rhs.ptr->use;因为传递函数rhs对应的指针需要被新的智能指针使用,所以使用数自增一。而当前智能指针需要更换新的指向值,那么就意味着旧的指向值的使用数要减一,所以有--ptr->use。然后再判断这个值是否已经变成0了,如果为0则意味着就指针已经没有被任何智能指针使用了,所以需要释放其内存,调用delete功能。
函数的参数在实际中是等号的右侧。
如:HasPtr ptr1;
HasPtr ptr2 = ptr1;