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

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

Patricia Arquette
发布: 2024-12-17 04:56:24
原创
811 人浏览过

Can a C   Class Contain Itself as a Member Variable?

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中文网其他相关文章!

来源:php.cn
上一篇:C 在编译和语法方面与 C 有何细微差别? 下一篇:写入文件时如何克服 C 结构填充不一致?
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
相关专题
更多>
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板