Maison >développement back-end >C++ >Comment initialiser une variable membre Const dans un constructeur C ?
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>
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>
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!