Maison > développement back-end > C++ > le corps du texte

Comment initialiser les membres protégés d'une classe parent dans le constructeur d'une classe enfant ?

Barbara Streisand
Libérer: 2024-10-25 04:45:02
original
275 Les gens l'ont consulté

How to Initialize Protected Members of a Parent Class in a Child Class's Constructor?

Initialisation des membres protégés avec une liste d'initialisation

Dans la programmation orientée objet, les classes parents peuvent avoir des membres protégés accessibles par les classes enfants. Lors de l'initialisation d'objets enfants, il peut être souhaitable d'initialiser également les membres protégés déclarés dans la classe parent. Cependant, ce n'est pas aussi simple qu'il y paraît.

Considérons l'exemple suivant :

<code class="cpp">class Parent {
protected:
    std::string something;
};

class Child : public Parent {
private:
    Child() : something("Hello, World!") {}
};</code>
Copier après la connexion

Dans cet exemple, nous essayons d'initialiser le membre protégé quelque chose de la classe parent en utilisant l'initialisation liste du constructeur de la classe enfant. Cependant, le compilateur signalera une erreur : la classe 'Child' n'a aucun champ nommé 'quelque chose'. Cette erreur se produit car le membre protégé quelque chose n'est pas déclaré dans la classe enfant et n'est donc pas visible dans la liste d'initialisation.

Solution

Pour initialiser les membres protégés d'un classe parent dans le constructeur d'une classe enfant, nous devons ajouter un constructeur (de préférence protégé) à la classe parent qui prend les paramètres nécessaires pour initialiser ces membres. La classe enfant peut ensuite utiliser ce constructeur pour transmettre les valeurs appropriées.

Voici une implémentation révisée :

<code class="cpp">class Parent {
protected:
    Parent(const std::string& something) : something(something) {}
    std::string something;
};

class Child : public Parent {
private:
    Child() : Parent("Hello, World!") {}
};</code>
Copier après la connexion

Dans cet exemple, nous avons ajouté un constructeur protégé à la classe Parent qui prend un paramètre de chaîne et l'utilise pour initialiser quelque chose au membre protégé. La classe Child utilise ensuite ce constructeur pour initialiser le membre protégé de son parent lors de sa propre construction.

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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!