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 ?

Patricia Arquette
Libérer: 2024-11-03 02:58:29
original
1001 Les gens l'ont consulté

How do you initialize a const member variable in a C   constructor?

Maintenir les propriétés de classe immuables avec l'initialisation du constructeur

En C, les constructeurs jouent un rôle crucial dans l'établissement de l'état initial d'un objet. Parfois, nous rencontrons des situations dans lesquelles certaines propriétés de classe doivent rester inchangées tout au long de la durée de vie de l'instance. Un scénario courant est l'attribution d'un pointeur constant lors de la création d'un objet.

Considérez l'extrait de code suivant :

<code class="C++">class Foo;

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

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

L'intention ici est de créer un objet Bar avec un pointeur non modifiable. à une instance Foo. Cependant, lors de la compilation, nous rencontrons une erreur. En effet, le pointeur "this" n'est pas directement accessible dans le constructeur d'une classe.

Pour surmonter ce problème, nous devons initialiser le champ constant dans la liste d'initialisation du constructeur en utilisant la syntaxe suivante :

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

Dans ce code mis à jour, nous renommons le paramètre entrant pour éviter toute confusion avec le membre de l'instance. Dans la liste d'initialisation, nous attribuons explicitement la valeur de l'argument _foo au membre constant foo.

En utilisant cette technique, nous définissons efficacement le pointeur foo sur une valeur const lors de la construction de l'objet, garantissant ainsi son immuabilité tout au long du processus. durée de vie de l'instance Bar.

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