Maison > développement back-end > C++ > Une classe C peut-elle se contenir en tant que variable membre ?

Une classe C peut-elle se contenir en tant que variable membre ?

Patricia Arquette
Libérer: 2024-12-17 04:56:24
original
804 Les gens l'ont consulté

Can a C   Class Contain Itself as a Member Variable?

Une classe C peut-elle se référencer en tant que membre ?

Imaginez un scénario dans lequel vous travaillez sur un programme C et désirez créer une classe qui représente les arbres d'expression. Dans cette classe, vous souhaitez définir des méthodes pour parcourir et évaluer l'arborescence dans l'ordre des suffixes. Cependant, au fur et à mesure que vous approfondissez l'implémentation, vous rencontrez un problème déroutant :

`

<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;
Copier après la connexion

};

Vous réalisez avec consternation que vous êtes incapable de déclarer 'gauche' et 'droite' comme Types de « nœuds ». Cela soulève une question fondamentale : une classe C peut-elle s'inclure en tant que membre ?

Dévoiler les limites

La réponse à cette question est un « non » catégorique. Déclarer les membres comme types « Node » crée une récursivité infinie. Chaque nœud contiendrait deux autres objets Node, qui à leur tour contiendraient deux autres objets Node, à l'infini. Cette définition récursive conduit à un objet de taille infinie, ce qui n'est tout simplement pas réalisable.

Présentation des pointeurs à la rescousse

Bien qu'une classe ne puisse pas se référencer directement en tant que membre , il peut toujours conserver une référence à lui-même via des pointeurs. Voici une version modifiée de votre classe qui résout ce problème :

`

<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
Copier après la connexion

};
`

En utilisant des pointeurs, vous pouvez maintenir une structure arborescente où chaque nœud référence d'autres nœuds de la même classe. Cela vous permet de parcourir et d'évaluer efficacement l'arbre d'expression sans rencontrer de récursion infinie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Article précédent:En quoi C diffère-t-il subtilement de C en termes de compilation et de syntaxe ? Article suivant:Comment surmonter les incohérences de remplissage de la structure C lors de l’écriture dans des fichiers ?
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal