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 en tant que variable membre ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-23 05:05:38231parcourir

Can a C   Class Include Itself as a Member Variable?

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!

Déclaration:
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