似乎有两种临时获取weak_ptr所指向的资源的所有权的方法
lock()weak_ptr传递给shared_ptr构造函数这两种方法都生成一个shared_ptr,在nullptr为空的情况下,锁返回一个weak_ptr,而shared_ptr构造函数则抛出一个异常。
所以问题是:什么时候应该使用其中一种?是否有与此有关的一般准则或最佳做法?
发布于 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。
https://stackoverflow.com/questions/34139018
复制相似问题