【发布时间】:2012-06-12 11:52:52
【问题描述】:
当您希望使用弱指针进行访问时,首先建议您通过锁定获得指向对象的强指针。如果指向的对象之前被删除,锁定可能不会成功。
在我看来,除非你在打破循环以确定什么是弱指针时做错了什么,否则锁定将会成功。所以你锁定只是为了交叉检查你的设计。
这是正确的吗?
我看到了一些关于缓存的评论,但它们似乎是对weak_ptrs的滥用。但当然,一个人的虐待是另一个人的创新。我想听听意见。
【问题讨论】:
-
这是一个很好的问题,不幸的是堆栈溢出不适用于征求意见的问题。这里是题外话。
-
请注意,如果您认为将weak_ptr提升为shared_ptr总是会成功,并且如果您还认为如此提升的weak_ptr永远不会是最后一个引用(也就是说,无论您设计什么强引用在,你设计的只要你持有你的锁就可以持续),那么你也可以使用原始指针而不是weak_ptr。 可以使用原始指针的代码中的错误检测是一个使用弱指针的动机,但我不认为这是他们发明的动机。跨度>
标签: c++ shared-ptr smart-pointers weak-ptr