STL之shared_ptr
Posted manch1n
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL之shared_ptr相关的知识,希望对你有一定的参考价值。
5.2.1 Class shared_ptr
shared_ptr提供了一种强大的能力:当对象被多个指针指向时,如若需要释放,仅仅需要赋值nullptr即可使其引用计数减1,而不用担心显示delete后在其他模块的指针失效。先写点简单操作。
相关函数,仅限shared_ptr相关,不包括与weak,以下内容摘自:http://www.cplusplus.com/reference/memory/shared_ptr/
get() | 返回指向原始的指针,建议少用,切记 |
operator bool | 返回指针是否指向了一个对象 |
operator * | 像正常指针一样解引用 |
opertor -> | 与指针对象相关的成员函数 |
owner_before | 暂留解释 |
reset() | 相当于令指针=nullptr,然而提供了几个有参数的接口。详情见链接 |
swap(p) | 与另一个智能指针交换,地址交换了 |
unique() | 是否是一个指针占有 |
use_count() | 返回引用计数 |
注意:对于数组,需要指定删除器(deleter)。如下:
std::shared_ptr<int> p(new int[10], [](int* p){delete [] p;});
另外,智能指针没有提供[]下标的重载,要自己得到原始指针后才能进行下标操作,通常这点也要少用。留意一下便捷的make_shared方法
//随着遇到的问题待续。。。
以上是关于STL之shared_ptr的主要内容,如果未能解决你的问题,请参考以下文章
stl中auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针使用总结