弱/强引用指针关系

5

我一直在尝试编写自己的弱/强指针,但我并没有完全理解它们之间的关系。我找到的所有内容都没有让我明白,而且往往一个文档会与另一个文档相矛盾。有人能详细解释一下弱/强指针之间的关系吗?最好附带图片或代码示例。

(请不要告诉我“使用boost”或“使用tr1”等。这不是作业,我想学习。)


你可能会对观看这个视频感兴趣。 - fredoverflow
想要学习是好的,但在开始尝试修理鹞式战斗机引擎之前,应该先了解汽车引擎的工作原理。基本原理可能相同,但有大量专业知识需要掌握。如果想要了解专业版本的工作原理,可以打开 Boost 并尝试理解它们的实现方式。 - Martin York
1个回答

11

一个强指针拥有底层的原始指针。它的存在可以保持原始指针的有效性,因此它不能指向已被清除的对象。当强指针销毁时,会导致原始指针删除。一个弱指针只知道原始指针,以及它是否仍然有效。它的存在并不会使原始指针保持有效性,同时也无法通过被清除来消除原始指针。

要获得更详细的答案,您需要展示您找到的矛盾或者对定义中某个特定部分的问题。


1
在我看来,将weak_ptr和raw pointer的区别加在这里会很好 - weak_ptr知道对象是否已被删除,通过weak_ptr尝试访问已删除的对象将产生定义行为 - 异常。 - maxim1000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接