[英]std::weak_ptr: lock or shared_ptr constructor?
似乎有两种方法可以临时获取weak_ptr
指向的资源的所有权:
lock()
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.