当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《std::weak_ptr:lock或shared_ptr构造函数?》经验,为你挑选了1个好方法。

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

    使用 lock()

    传递weak_ptrshared_ptr构造函数

这两个都产生一个shared_ptr,nullptr如果weak_ptr是空的并且shared_ptr构造函数抛出异常,则锁返回a .

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



1> Anon Mail..:

复制自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在可能无法工作且可以检查时可以使用.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有