Maison  >  Article  >  développement back-end  >  Quel est le but de l'opérateur deux-points (':') dans les constructeurs C et en quoi diffère-t-il des affectations explicites de variables membres ?

Quel est le but de l'opérateur deux-points (':') dans les constructeurs C et en quoi diffère-t-il des affectations explicites de variables membres ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-13 06:50:03311parcourir

What is the purpose of the colon operator (

Listes d'initialisation dans les constructeurs C

L'opérateur deux-points (":") utilisé dans le code C fourni fait partie d'une liste d'initialisation de membre , qui est un moyen d'initialiser les variables membres de la classe dans un constructeur. Contrairement à la suggestion de la question, cela n'équivaut pas à des affectations individuelles explicites.

Dans cet exemple :

class MyClass {
public:

    MyClass() : m_classID(-1), m_userdata(0) { 
    }

    int m_classID;
    void *m_userdata;
};

Le constructeur MyClass() est un constructeur par défaut qui initialise deux variables membres , m_classID et m_userdata, aux valeurs -1 et 0 respectivement. Cela se fait à l'aide de la liste d'initialisation des membres, qui suit la liste des paramètres du constructeur et précède le corps du constructeur.

La liste d'initialisation des membres initialise les variables des membres de la classe dans l'ordre dans lequel elles sont déclarées dans la classe. Chaque initialisation est séparée par une virgule. Les valeurs spécifiées dans la liste d'initialisation sont immédiatement affectées aux variables membres correspondantes lorsque le constructeur est appelé.

En revanche, effectuer des affectations individuelles dans le corps du constructeur, comme suggéré dans la question, entraînerait des modifications explicites de valeurs déjà initialisées. Ceci est différent de l'initialisation effectuée par la liste d'initialisation des membres.

Par conséquent, la liste d'initialisation des membres fournit un moyen pratique d'initialiser les variables des membres de la classe dans un constructeur, et elle diffère des affectations individuelles explicites.

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