Maison >développement back-end >C++ >Une classe C peut-elle s'inclure en tant que variable membre ?
Une classe C peut-elle s'inclure mutuellement en tant que membre ?
En C, il est tentant de définir une classe qui s'inclut elle-même en tant que membre pour représenter des structures imbriquées comme des arbres d'expression. Cependant, cette approche n'est pas autorisée.
Raisonnement :
Comme indiqué dans la réponse fournie, définir une classe avec une variable membre de son propre type entraînerait un objet infiniment grand. Chaque nœud contiendrait deux objets Node, qui contiendraient à leur tour deux objets Node supplémentaires, et ainsi de suite à l'infini. Cela rendrait l'allocation de mémoire peu pratique et entraînerait une erreur d'exécution.
Solution :
Pour résoudre ce problème, il est nécessaire d'utiliser des pointeurs vers le type de classe comme variables membres au lieu du type de classe lui-même. Cela permet la représentation de l'imbrication tout en évitant le problème de récursion infinie.
Considérez la définition révisée suivante :
class Node { char *cargo; Node* left; // Pointer to a Node object Node* right; // Another pointer to a Node object };
En employant des pointeurs, nous pouvons créer une structure arborescente sans exécuter dans le problème autoréférentiel.
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!