Parallèlement à l'héritage, les constructeurs sont également essentiels en C++. UN constructeur est une fonction membre unique qui vous permet d'initialiser les propriétés de l'objet. Un Constructeur de succession est un constructeur utilisé pour initialiser à la fois la classe de base et les objets de classe dérivés dont la classe dérivée a héritée. Le constructeur de succession est chargé d'initialiser à la fois les membres de la classe de base hérités et les membres de la classe dérivés. Pour y parvenir, le constructeur invoque le constructeur de la classe de base, garantissant que tous les membres de la classe dérivée sont correctement initialisés, y compris ceux hérités de la classe de base.
En invoquant le constructeur de la classe de base et en le faisant passer les paramètres nécessaires, le constructeur de succession initialise les membres de la classe de base. Ceci est accompli en utilisant le «Classe de base (args)» Liste d'initialisation dans le constructeur. D'autres instructions particulières à la classe dérivée sont fournies dans le corps du constructeur.
La syntaxe pour héritant Une classe en C ++ est:
classe DeriveClass: AccessSpecificier Baseclass
// membres de la classe
;
La nouvelle classe est formée dans ce cas, "Classe dérivée", héritera de «Baseclass». Le niveau d'accès aux membres hérités est spécifié par le «AccessSpecificateur ». C ++ utilise trois types de spécificateurs d'accès, à savoir "public-privé", et "protégé". Le mot "public" indique que la classe dérivée a accès aux membres publics de la classe de base. La classe dérivée n'a pas accès aux membres de la classe de base, selon le 'privé' spécificateur. La classe dérivée a accès aux membres de la classe de base protégés qui peuvent être hérités par leurs classes d'enfants, selon le 'protégé' spécificateur.
Exemple d'hérédité en C++
L'exemple suivant montre la mise en œuvre de Héritage en C ++:
#inclure
Utilisation de Namespace Std;
Classe Animal
public:
void Eat ()
couter << "I can eat!" << endl;
void sleep ()
couter << "I can sleep!" << endl;
;
classe Cat: Animal public
public:
void meow ()
couter << "I can meow!" << endl;
;
int main()
Cat Cat1;
cat1.manger();
cat1.dormir();
cat1.Miaou();
retour 0;
Le code donné définit deux classes, "Animal" et "Chat", où "Chat" dérive de "Animal". Les deux classes ont des fonctions membres, telles que "manger dormir", et "Miaou". La fonction principale crée un objet de la classe "Chat" et appelle le hérité Fonctions de la classe "Animal" ainsi que la fonction spécifique de la classe "Chat", lequel est "Miaou". Le programme publie le texte à la console, indiquant que le chat peut manger, dormir et miauler.
Sortir
Lorsqu'une classe est dérivée, toutes les variables des membres de la classe de base et les fonctions membres sont transférées à la classe dérivée. Le hérité L'accessibilité des membres dans la classe dérivée est déterminée par le spécificateur d'accès. La classe dérivée peut également remplacer de nouvelles fonctionnalités à celles qui existent déjà. Il peut ajouter de nouvelles implémentations pour les méthodes de la classe de base et ajouter de nouvelles fonctions et variables membres.
Il est crucial de se rappeler que le constructeur de succession Doit être utilisé pour appeler explicitement le constructeur de la classe de base avec les paramètres nécessaires si la classe de base a un constructeur par défaut ou s'il n'est pas disponible.
Conclusion
La forte caractéristique de héritage en C ++ permet aux classes de réutiliser le code en héritant des caractéristiques et des actions des autres. Une caractéristique utile des C ++ constructeur de succession permet aux classes dérivées de hériter des propriétés, des méthodes et des membres de données d'une classe de base. Avec l'ajout d'une liste d'initialisation pour les constructeurs de classe de base, il est défini en utilisant la même syntaxe qu'un constructeur standard. Les programmeurs C ++ peuvent minimiser la duplication du code et améliorer la structure du code en utilisant le constructeur de succession. Pour créer des hiérarchies de classe complexes dans la programmation orientée objet, c'est un outil important.