C 类可以将自己引用为成员吗?
想象一个场景,您正在开发一个 C 程序并希望创建表示表达式树的类。在此类中,您希望定义以后缀顺序遍历和评估树的方法。然而,当你深入实现时,你会遇到一个令人困惑的问题:
`
<br>class Node {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">char *cargo; Node left; Node right;
};
您沮丧地意识到您无法将“左”和“右”声明为“节点”类型。这就提出了一个基本问题:C 类可以将自己包含为成员吗?
揭示限制
这个问题的答案是响亮的“不”。将成员声明为“节点”类型会创建无限递归。每个 Node 将包含另外两个 Node 对象,而后者又将包含另外两个 Node 对象,如此循环往复。这种递归定义会导致对象无限大小,这根本不可行。
引入指针来拯救
尽管类不能直接将自身引用为成员,它仍然可以通过指针维护对自身的引用。以下是解决此问题的类的修订版本:
`
<br>class Node {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">char *cargo; Node* left; // Pointer to a Node Node* right; // Pointer to a Node
};
`
通过使用指针,您可以维护一个树结构,其中每个节点引用同一类中的其他节点。这使您可以高效地遍历和评估表达式树,而不会遇到无限递归。
以上是C 类可以将自身包含为成员变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!