似乎有两种方法可以暂时获取 a 所指向的资源的所有权weak_ptr
:
- Use
lock()
- 通过
weak_ptr
to a shared_ptr
构造函数
这两者都会产生一个shared_ptr
,锁返回一个nullptr
在这种情况下weak_ptr
是空的并且shared_ptr
构造函数抛出异常。
所以问题是:什么时候应该使用其中之一?是否有与此相关的一般准则或最佳实践?
复制自http://en.cppreference.com/w/cpp/memory/weak_ptr/lock 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。
这让我相信您可以根据是否想要抛出异常来选择使用哪一个。构造函数可以在以下情况下使用must工作,而lock
当它可能不起作用并且您可以检查时可以使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)