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!