Maison > développement back-end > C++ > Comment initialiser correctement les variables membres de la classe de base dans un constructeur de classe dérivée ?

Comment initialiser correctement les variables membres de la classe de base dans un constructeur de classe dérivée ?

Linda Hamilton
Libérer: 2024-12-05 01:14:10
original
727 Les gens l'ont consulté

How to Correctly Initialize Base Class Member Variables in a Derived Class Constructor?

Comment initialiser les variables membres de la classe de base dans le constructeur de classe dérivée

Dans la programmation orientée objet, il est courant d'avoir des classes dérivées qui héritent de classes de base. Lors de la création d'un constructeur dans une classe dérivée, il est essentiel d'initialiser correctement les variables membres héritées de la classe de base.

Considérez le code suivant :

class A {
public:
    int a, b;
};

class B : public A {
    B() : A(), a(0), b(0) {
    }
};
Copier après la connexion

Dans cet exemple, la classe dérivée B tente d'initialiser les variables membres a et b dans son propre constructeur. Il s’agit cependant d’une approche incorrecte. La bonne façon d'initialiser les variables membres de la classe de base dans une classe dérivée est d'utiliser le constructeur de la classe de base :

class A {
protected:
    A(int a, int b) : a(a), b(b) {} // Accessible to derived classes
private:
    int a, b; // Keep these variables private in A
};

class B : public A {
public:
    B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0.
    {
    }
};
Copier après la connexion

En rendant le constructeur de la classe de base accessible (protégé ou public) et en l'appelant dans le constructeur de la classe dérivée , nous initialisons correctement les variables membres héritées. Cette approche garantit que la classe de base est correctement initialisée avant l'exécution du code de la classe dérivée.

Notez qu'il n'est pas recommandé de rendre publiques les variables membres de la classe de base dans la classe dérivée (comme dans l'exemple incorrect) car cela brise le principe d'encapsulation, permettant un accès externe à des données protégées ou privées.

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