boost之shared_ptr的一个计数小问题

    shared_ptr & operator=( shared_ptr const & r ) BOOST_NOEXCEPT
    {
         this_type(r).swap(*this);
         return *this;
    }

当调用到this_type(r);时,会调用复制构造函数,此时r的计数会加1,然后调用swap,将this的值和this_type(r)调换,

没有用this_type temp = this_type(r);是省却了一个临时变量。

 

你可能感兴趣的:(boost之shared_ptr的一个计数小问题)