Maison > développement back-end > C++ > Comment initialiser une variable membre Const dans un constructeur C ?

Comment initialiser une variable membre Const dans un constructeur C ?

Mary-Kate Olsen
Libérer: 2024-11-03 02:54:03
original
371 Les gens l'ont consulté

How to Initialize a Const Member Variable in a C   Constructor?

Comment initialiser un champ immuable dans un constructeur : une exploration approfondie

En C, il est possible de rencontrer un scénario où vous avez l'intention de créer une classe qui nécessite un champ immuable dans son constructeur. Dans un tel cas, garantir l’immuabilité du domaine est crucial. Cet article examinera l'approche appropriée pour atteindre cet objectif.

Considérons un scénario dans lequel la classe Foo sert de structure de données et la classe Bar est un wrapper autour de Foo qui nécessite un pointeur Foo comme argument lors de la construction. Notre objectif est de garantir que ce pointeur reste immuable pendant toute la durée de vie d'une instance de Bar.

Une tentative d'initialisation du pointeur const foo dans le constructeur de Bar pourrait ressembler à ce qui suit :

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo; // Compiler error
    }
};

class Foo {
public:
  int a;
};</code>
Copier après la connexion

Cependant , cette approche déclenche une erreur de compilation. Pour le rectifier et établir l'immuabilité de foo dans les instances Bar, nous devons utiliser une liste d'initialisation :

<code class="cpp">Bar(Foo* _foo) : foo(_foo) {}</code>
Copier après la connexion

Dans cette version révisée, le constructeur prend un pointeur Foo comme argument, l'assigne au membre variable foo en utilisant la liste d'initialisation, et renomme la variable entrante pour éviter toute confusion potentielle avec la variable membre.

Cette technique garantit que le pointeur foo est initialisé immédiatement lors de la construction de Bar, le rendant immuable pour le reste de la barre. durée de vie de l'instance.

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
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal