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
Patricia Arquetteoriginal
2024-11-27 20:04:14975parcourir

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)
    {
        ...
    }
};

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;
};

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!

Déclaration:
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