C++中智能指针的设计和使用(3)

做完赋值操作后,那么就成为如下图所示了。红色标注的就是变化的部分:

C++中智能指针的设计和使用

而还要注意的是,重载赋值操作符的时候,一定要注意的是,检查自我赋值的情况。

如图所示:

C++中智能指针的设计和使用

此时,做p1 = p1的操作。那么,首先u1.use自增1,为2;然后,u1.use自减1,为1。那么就不会执行delete操作,剩下的操作都可以顺利进行。按《C++ primer》说法,“这个赋值操作符在减少左操作数的使用计数之前使rhs的使用计数加1,从而防止自身赋值”。哎,反正我是那样理解的。当然,赋值操作符函数中一来就可以按常规那样:

if(this == &rhs) 

        return *this

运行结果如下图:

C++中智能指针的设计和使用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0466372c9753b5b50c4fbec0d40b9963.html