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

Comment fonctionnent les listes d'initialisation des membres dans les constructeurs C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-16 06:35:14570parcourir

How Do Member Initialization Lists Work in C   Constructors?

Listes d'initialisation des membres dans les constructeurs

En C , un deux-points suivi d'une expression après un constructeur fait partie d'une liste d'initialisation de membre. Il répond à deux objectifs principaux :

1. Appel des constructeurs de classe de base

Dans les classes dérivées, la liste d'initialisation des membres peut être utilisée pour spécifier les arguments pour appeler le constructeur de la classe de base. Par exemple, dans le code suivant :

class demo
{
public:
    demo(unsigned char le = 5, unsigned char default) : len(le)
    {
        // Body of the constructor
    }
};

class newdemo : public demo
{
public:
    newdemo() : demo(0, 0)
    {
        // Body of derived class constructor
    }
};

La syntaxe : demo(0, 0) dans le constructeur newdemo appelle le constructeur de la classe de base demo avec les arguments 0 et 0.

2. Initialisation des membres de données

Avant d'exécuter le corps du constructeur, la liste d'initialisation des membres peut être utilisée pour initialiser les données membres de la classe. Ceci est particulièrement utile pour les membres const qui ne peuvent pas être affectés dans le corps du constructeur. Par exemple :

class Demo
{
public:
    Demo(int& val) : m_val(val)
    {
        // Body of constructor
    }

private:
    const int& m_val;
};

Dans cet exemple, la syntaxe : m_val(val) initialise le membre de données de référence m_val const avec la valeur de l'argument du constructeur val.

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