码迷,mamicode.com
首页 > 其他好文 > 详细

STL之shared_ptr

时间:2019-01-27 00:24:34      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:建议   引用计数   har   reset   []   body   数组   border   int   

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

标签:建议   引用计数   har   reset   []   body   数组   border   int   

原文地址:https://www.cnblogs.com/manch1n/p/10325329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!