首页 >后端开发 >C++ >C 类可以将自身包含为成员变量吗?

C 类可以将自身包含为成员变量吗?

Patricia Arquette
Patricia Arquette原创
2024-12-17 04:56:24804浏览

Can a C   Class Contain Itself as a Member Variable?

C 类可以将自己引用为成员吗?

想象一个场景,您正在开发一个 C 程序并希望创建表示表达式树的类。在此类中,您希望定义以后缀顺序遍历和评估树的方法。然而,当你深入实现时,你会遇到一个令人困惑的问题:

`

<br>class Node {</p>
<pre class="brush:php;toolbar:false">char *cargo;
Node left;
Node right;

};

您沮丧地意识到您无法将“左”和“右”声明为“节点”类型。这就提出了一个基本问题:C 类可以将自己包含为成员吗?

揭示限制

这个问题的答案是响亮的“不”。将成员声明为“节点”类型会创建无限递归。每个 Node 将包含另外两个 Node 对象,而后者又将包含另外两个 Node 对象,如此循环往复。这种递归定义会导致对象无限大小,这根本不可行。

引入指针来拯救

尽管类不能直接将自身引用为成员,它仍然可以通过指针维护对自身的引用。以下是解决此问题的类的修订版本:

`

<br>class Node {</p>
<pre class="brush:php;toolbar:false">char *cargo;
Node* left;  // Pointer to a Node
Node* right;  // Pointer to a Node

};
`

通过使用指针,您可以维护一个树结构,其中每个节点引用同一类中的其他节点。这使您可以高效地遍历和评估表达式树,而不会遇到无限递归。

以上是C 类可以将自身包含为成员变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn