This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
in204:cpp:syntax:class:constructor [2019/09/18 14:42] 147.250.35.104 [Les différents modes d'initialisation des champs] |
in204:cpp:syntax:class:constructor [2022/11/18 10:51] (current) |
||
---|---|---|---|
Line 246: | Line 246: | ||
Plus spécifiquement : | Plus spécifiquement : | ||
- | * ''width(0), height(0)'' est une liste d'initialisateur des champs et de [[in204:class:derivation|classe de base]]. Cette liste d'initialisateur respecte la syntaxe suivant : ''membre(paramètres)'' où membre est le nom du champ ou le type de la classe de base et où ''paramètres'' représentent le ou les paramètères sont les paramètres qui sont passés au constructeur du membre. Les membres sont initialisés dans l'ordre dans lequel ils apparaissent dans la liste d'initialisateurs. Ainsi dans l'exemple précédent, le champ ''width'' est initialisé avant le champ ''height''. | + | |
+ | * ''width(0), height(0)'' définit une liste d'initialisateurs des champs et des [[in204:class:derivation|classes de base]]. Chaque initialisateur a pour syntaxe ''membre(paramètres)'' où ''membre'' est le nom du champ ou le type de la classe de base et où ''paramètres'' représentent le ou les paramètres qui sont passés au constructeur du membre (éventuellement aucun paramètre si c'est le membre est initialisé par défaut). Chaque initialisateur est séparer de son successeur par une ','. Les membres sont initialisés dans l'ordre dans lequel ils apparaissent dans la liste d'initialisateurs. Ainsi dans l'exemple précédent, le champ ''width'' est initialisé avant le champ ''height''. | ||
* le code contenu dans le corps du constructeur est exécuté une fois l'ensemble des membres initialisés. | * le code contenu dans le corps du constructeur est exécuté une fois l'ensemble des membres initialisés. | ||
+ | |||
+ | De fait, si pour un champ donné ou une classe de base, aucun initialisateur n'est spécifié dans la liste, dans ce cas, c'est l'initisateur par défaut qui est automatiquement appelé avant d'exécuter le code contenu dans le corps de la fonction. | ||
+ | |||
+ | |||
+ | |||
==== Les différents types de constructeurs ==== | ==== Les différents types de constructeurs ==== | ||
Line 255: | Line 261: | ||
C++ définit plusieurs types de constructeurs. | C++ définit plusieurs types de constructeurs. | ||
- | * [[in204:constructor:default|Le constructeur par défaut]]. Il s'agit d'un constructeur ne prenant aucun argument. | ||
- | * [[in204:constructor:copy|Le constructeur de recopie]]. Ce constructeur est un constructeur servant à initialiser un objet en recopiant les informations d'un objet déjà existant et de même type. | ||
- | * [[in204:constructor:conversion|Les constructeurs de promotion ou de conversion]]. Ces constructeurs permettent d'initialiser un objet de manière à ce qu'il soit équivalent à un objet ou un valeur ayant un autre type. | ||
- | * [[in204:constructor:spezialized|Les constructeurs spécialisés]]. Ce sont des constructeurs qui permettent d'initialiser un objet à partir d'un ensemble de paramètres. | ||
<code cpp> | <code cpp> | ||
Line 282: | Line 284: | ||
</code> | </code> | ||
+ | |||
+ | * [[in204:cpp:syntax:class:constructor:default|Le constructeur par défaut]]. Il s'agit d'un constructeur ne prenant aucun argument. | ||
+ | * [[in204:cpp:syntax:class:constructor:copy|Le constructeur de recopie]]. Ce constructeur est un constructeur servant à initialiser un objet en recopiant les informations d'un objet déjà existant et de même type. | ||
+ | * [[in204:cpp:syntax:class:constructor:conversion|Les constructeurs de promotion ou de conversion]]. Ces constructeurs permettent d'initialiser un objet de manière à ce qu'il soit équivalent à un objet ou un valeur ayant un autre type. | ||
+ | * [[in204:cpp:syntax:class:constructor:spezialized|Les constructeurs spécialisés]]. Ce sont des constructeurs qui permettent d'initialiser un objet à partir d'un ensemble de paramètres. | ||