Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Liste d'Initialisation du Constructeur | Constructeurs et Destructeurs
C++ Oop
course content

Contenu du cours

C++ Oop

C++ Oop

1. Fondamentaux de la POO en C++
2. Constructeurs et Destructeurs
3. Aperçu de l'Encapsulation
4. Aperçu de l'Héritage
5. Aperçu du Polymorphisme

book
Liste d'Initialisation du Constructeur

Une liste d'initialisation est un mécanisme utilisé dans les constructeurs pour fournir un moyen d'initialiser les membres de données d'une classe avant que le corps du constructeur ne soit exécuté. Cela peut être particulièrement utile lorsqu'on traite des instances qui ont des exigences d'initialisation complexes ou lorsqu'on travaille avec objets de classes qui contiennent des membres const ou de référence.

Syntaxe de la liste d'initialisation

La syntaxe des listes d'initialisation peut sembler excessivement complexe et déroutante. On pourrait envisager d'utiliser uniquement un constructeur comme alternative plus simple. Cependant, à mesure que le programme s'étend, les listes d'initialisation s'avèrent pratiques et faciles à utiliser.

code example
  • : (symbole deux-points) : introduit la liste d'initialisation des membres dans un constructeur.

  • member(value) : une variable membre de classe étant initialisée avec la valeur (argument passé au constructeur).

  • { } (Accolades) : le corps du constructeur, où un code supplémentaire peut être exécuté après l'initialisation des membres.

Limitations et Considérations

Il existe une idée fausse courante concernant l'ordre d'initialisation dans la liste d'initialisation. Contrairement à la croyance populaire, l'initialisation des variables dans la liste d'initialisation ne suit pas l'ordre dans lequel elles sont écrites. Au lieu de cela, elle est déterminée par l'ordre de déclaration des membres dans la classe, et non par la séquence dans la liste d'initialisation.

cpp

main

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Remarque

Essayez de modifier la séquence d'initialisation de la variable total dans la liste d'initialisation et dans la déclaration de variable au sein de la classe.

Lorsque vous utilisez des listes d'initialisation dans un constructeur, le nom de l'argument peut être le même que le nom de l'attribut de la classe.

cpp

main

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Mais si vous utilisez le même nom pour les variables membres et les arguments, le total prendra la valeur des arguments multipliés, pas des membres. Pour voir cela, essayez de définir la quantité à zéro au lieu de l'argument.

1. Qu'est-ce qu'une liste d'initialisation de constructeur ?

2. Quel symbole introduit la liste d'initialisation des membres dans un constructeur ?

Qu'est-ce qu'une liste d'initialisation de constructeur ?

Qu'est-ce qu'une liste d'initialisation de constructeur ?

Sélectionnez la réponse correcte

Quel symbole introduit la liste d'initialisation des membres dans un constructeur ?

Quel symbole introduit la liste d'initialisation des membres dans un constructeur ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3
We're sorry to hear that something went wrong. What happened?
some-alt