为什么弱指针不能访问底层指针?

qua*_*ant 7 c++ visual-studio-2012

我问这个是因为这是一个令人衰弱的限制因为一些显而易见的原因但我确信C++标准人员有充分的理由这样做,而且我想知道它是什么.并不是因为它会产生任何影响,而是因为它会让我感觉更好,因为它知道它有充分的理由.

这是我目前的看法; 我认为弱指针有两个主要用途:

1)避免所有权循环.2)减少与许多共享指针弹跳相关的开销.

前者不会更少服务,后者通过实现weak_ptr.get()更好地服务,那么它为什么不存在呢?更重要的是,weak_ptr.get()不会比weak_ptr.lock().get()更有效,或者编译器能否优化它?

Rob*_*edy 10

弱指针需要能够检查它引用的智能指针是否仍然有效.如果它不能这样做,那么你无法知道结果是否在get你实际使用它时是有效的.

这就是为什么lock; 它为您提供了一个智能指针,只要您需要它就会有效(预计不会很长).

如果你想直接访问,那么你真正想要的是一个普通的"哑"指针.