首页 > 其他 > 详细

智能指针之weak_ptr

时间:2020-03-21 13:25:56      阅读:53      评论:0      收藏:0      [点我收藏+]

概述

weak_ptr是一种不控制所指向对象生存期的智能指针,它指向一个由shared_ptr管理的对象。将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。并且一旦最后一个shared_ptr被销毁,其所指向的对象就会被释放,就算此时仍有weak_ptr指向该对象,也会被释放。

由于对象可能不存在,我们不能用weak_ptr直接访问对象,而必须调用lock。这个函数检查weak_ptr指向的对象是否仍存在。例如:

if (shared_ptr<int> np = np.lock()) {    // 如果np不为空则条件成立
    cout << *np << endl;                 // 此时可以访问其对象
}
常用操作 用法说明
weak_ptr< T > w 可以指向类型为T的对象的空week_ptr
weak_ptr< T > w(sp) 与shared_ptr sp指向相同对象的weak_ptr。T必须能转换为sp指向的类型
w = p p可以是一个shared_ptr或一个weak_ptr。赋值后w与p共享对象
w.reset() 将w置空
w.use_count() 与w共享对象的shared_ptr的数量
w.expired() 如果w.use_count()为0则返回true,否则返回false
w.lock() 如果w.expired()为true,返回一个空shared_ptr,否则返回其绑定的shared_ptr

智能指针之weak_ptr

原文:https://www.cnblogs.com/southernEast/p/12538644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!