C++关于指针型句柄的赋值操作符,有点不明白的地方,新手求帮忙

C++关于指针型句柄的赋值操作符,有些不明白的地方,新手求帮忙~
就是赋值操作符,比如

B& B::operator=(const B & rhs)
{
      ++rhs.use;            //这个是把引用实参的计数+1了
     decr_use();           //就是这一步???
     p=rhs.p;
    ......
};

decr_use()是私有成员函数,定义为
if(--*use==0){dlete p;delete use;}

我就想说在赋值操作符的定义中,执行decr_use()不是将左操作数的计数减一嘛?不是可能提前删除p吗?


------解决思路----------------------
decr_use 就是把自己当前管理的资源计数器减一,如果为零了,那么自己就是该资源最后的持有者,所以有责任把资源删除了,否则就泄漏了,完事了以后再把赋值操作符源对象的资源管理起来。

另外这程序写的有问题,如果 delete 异常了,rhs 的资源引用计数就错了。