2011-03-20 72 views
3

我一直在试图编写自己的弱/强指针,但我不清楚这种关系。我似乎遇到的所有事情都没有做到明确,通常一个文档会对另一个文档所说的内容进行调整。任何人都可以请详细解释弱/强指针关系,也许图像或代码示例也可以? (请不要只是告诉我“使用boost”或“使用tr1”等,这不是作业,我想学习)。弱/强参考指针关系

+0

您可能会感兴趣的观看[视频](http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Advanced-STL-1-of-n) 。 – fredoverflow 2011-03-20 19:39:53

+0

可以学习。但是人们应该能够理解汽车发动机在开始尝试使用har式发动机之前的工作原理。基本原则可能是相同的,但有许多专业知识。如果你想看看专业版本如何工作,请打开提示并尝试首先了解它们的实现。 – 2011-03-20 21:35:22

回答

8

强指针拥有底层的原始指针。它的存在可以使原始指针保持活动状态,因此它不能指向已被清理的东西。其销毁可能导致原始指针的删除。弱指针只知道原始指针,以及它是否仍然有效。它不会使原始指针保持存在状态,并且不能通过清理来使原始指针消失。

为了获得更详细的答案,你需要证明你已经发现,你对定义的特定部分的矛盾或问题。

+0

恕我直言,这将是很好这里要补充的weak_ptr和原始指针之间的区别 - 的weak_ptr知道对象是否已被删除或不,并通过了weak_ptr访问已删除对象的尝试都将产生_defined_行为 - 例外 – maxim1000 2011-03-20 20:21:53