Maison > développement back-end > C++ > Comment fonctionnent les listes d'initialisation des membres dans les constructeurs C et l'héritage ?

Comment fonctionnent les listes d'initialisation des membres dans les constructeurs C et l'héritage ?

Patricia Arquette
Libérer: 2024-11-27 20:04:14
original
1029 Les gens l'ont consulté

How Do Member Initialization Lists Work in C   Constructors and Inheritance?

Liste d'initialisation des membres dans les constructeurs

En C , les constructeurs peuvent initialiser les membres de données à l'aide d'une liste d'initialisation de membres. Cette liste apparaît après le nom du constructeur, séparé par deux points (:).

Liste d'héritage et d'initialisation des membres

La liste d'initialisation des membres peut également être utilisée pour appeler la base constructeurs de classe. Dans le code fourni :

class demo 
{
public:
    demo(unsigned char le = 5, unsigned char default) : len(le) 
    { 
        ...
    }
};
class newdemo : public demo 
{
public:
    newdemo(void) : demo(0, 0)
    {
        ...
    }
};
Copier après la connexion

demo(0, 0) dans le constructeur de newdemo appelle le constructeur de sa classe de base démo avec les arguments 0 et 0, initialisant le membre len.

Utilisation générale de la liste d'initialisation des membres

En dehors de l'héritage, la liste d'initialisation des membres permet pour :

Initialisation des membres de données avant le corps du constructeur :

Les membres qui ne sont pas const peuvent être initialisés dans la liste d'initialisation avant l'exécution du corps du constructeur. Cela garantit que le membre est initialisé quel que soit le flux du constructeur.

Initialisation des membres de données Const :

Les membres de données Const ne peuvent être initialisés que dans leur déclaration ou avec un liste d'initialisation des membres.

Exemple :

class MyClass
{
public:
    MyClass(int value) : value(value) // Initialize const member in initialization list
    { 
        ...
    }
private:
    const int value;
};
Copier après la connexion

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