我一直在审查C++指针和引用,并想验证一下我从Wikipedia的以下示例中理解“破坏性程序变体”的含义:



这里的意思是(没有双关语),当我们的指针被引用到一个新的Node对象时,“根”指针的其他副本可能仍然指向NULL值吗?

如果是,那么为什么要使用“树的先前版本丢失”一词? (在C++中,对此简单的解决方案不是确保没有人存储指向NULL二进制树的指针,或者确保他们存储对根指针的引用而不是其副本?)

最佳答案

在Wikipedia条目的更下方,Python的行为被作为对比示例。在那里,您看到“向树中添加节点”实际上会创建一个带有额外节点的新树。因此,在这种情况下,仍可以引用调用插入之前的树。

但是,在C++示例中,当插入新节点并且丢失了先前的状态时,树结构将发生更改。

10-08 04:13