c++primer关于赋值操作符的一个有关问题

c++primer关于赋值操作符的一个问题
C/C++ code
ScreenPtr& ScreenPtr::operator=(const ScreenPtr& rhs)
{
    ++ptr->use;
    if(--ptr->use==0)
        delete ptr;
    ptr=rhs.ptr;
    return *this;
}


ScreenPtr是一个具有一个指向一个含有使用计数use的指针的类.
为什么这里要先对使用计数先自增,再自减呢? 自增一次然后自减一次不还是原来的那个数吗??

------解决方案--------------------
C/C++ code

ScreenPtr& ScreenPtr::operator=(const ScreenPtr& rhs)
{
    ++rhs.ptr->use;
    if(--ptr->use==0)
        delete ptr;
    ptr=rhs.ptr;
    return *this;
}