繁体   English   中英

std :: weak_ptr:lock或shared_ptr构造函数?

[英]std::weak_ptr: lock or shared_ptr constructor?

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

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

这两个都产生一个shared_ptr ,在weak_ptr为空并且shared_ptr构造函数抛出异常的情况下,锁返回nullptr

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

复制自http://en.cppreference.com/w/cpp/memory/weak_ptr/lock

此函数和std :: shared_ptr的构造函数都可用于获取std :: weak_ptr引用的托管对象的临时所有权。 不同之处在于std :: shared_ptr的构造函数在其std :: weak_ptr参数为空时抛出异常,而std :: weak_ptr :: lock()构造一个空的std :: shared_ptr。

这让我相信你根据是否要抛出异常来选择使用哪一个。 构造函数可以在必须工作时使用,而lock可以在它可能无法工作时使用,您可以检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM