首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::weak_ptr:锁还是shared_ptr构造函数?

std::weak_ptr:锁还是shared_ptr构造函数?
EN

Stack Overflow用户
提问于 2015-12-07 16:58:32
回答 1查看 917关注 0票数 6

似乎有两种临时获取weak_ptr所指向的资源的所有权的方法

  1. 使用lock()
  2. weak_ptr传递给shared_ptr构造函数

这两种方法都生成一个shared_ptr,在nullptr为空的情况下,锁返回一个weak_ptr,而shared_ptr构造函数则抛出一个异常。

所以问题是:什么时候应该使用其中一种?是否有与此有关的一般准则或最佳做法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 17:08:40

ptr/lock复制

这个函数和std::shared_ptr的构造函数都可以用来获得std::weak_ptr所引用的托管对象的临时所有权。区别在于,std::shared_ptr的构造函数在其std::weak_ptr参数为空时抛出异常,而std::weak_ptr::lock()构造空std::shared_ptr。

这使我相信,您根据是否要抛出异常来选择要使用的异常。当必须工作时,可以使用构造函数,而在可能不能工作并且可以检查的情况下,可以使用lock

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34139018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档