到现在为止遇到了几种智能指针
shared_ptr
特点:可以自动销毁,并且可以多个指针指向同一块动态内存,内部有一个计数器,等到计数器为零就会自动销毁
weak_ptr
特点:是shared_ptr指针的附属,weak_ptr指向shared_ptr的区域,但并不会增加shared_ptr的计数器值,而且也不可以直接使用,需要lock(),提升为shared_ptr才可以使用。
scope_ptr
特点:也可以自动释放,但是不能和其他指针共享内存,也就是一块共享内存只能有一个scope_ptr指针,因为scope_ptr在销毁时是直接销毁这个指针指向的动态内存,如果有其他指针一起指向,那么其他指针就没有用了。
并且这个指针不能进行移动和复制操作的,可以交换
unique_ptr:也可以自动释放,但是不能和其他指针共享内存,也就是一块共享内存只能有一个scope_ptr指针
但是这个指针可以移动,不能复制
unique_ptr<TEST> p2(p1.release());
例如上面程序就是把p1指向的内容转给了p2,然后p1指向NULL