User Tools

Site Tools


in204:cpp:syntax:class:constructor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
in204:cpp:syntax:class:constructor [2019/09/18 13:50]
147.250.222.245 [Les différents types de constructeurs]
in204:cpp:syntax:class:constructor [2022/11/18 10:51] (current)
Line 238: Line 238:
 { {
     int width;     int width;
-    ​m_height+    ​int height
-    MyClass(): ​[member initializer list]+    MyClass(): ​width(0), height(0) // Liste d'​initialisateurs
     {     {
-        ​[initialization code body]+        ​// Corps du constructeur
     }     }
 </​code>​ </​code>​
  
-Plus précisémenten C++, l'initialisation ​est systèmatiquement effectué comme suit+Plus spécifiquement :  
 + 
 +  * ''​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. 
 + 
 +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. 
  
-Phase 1 : pour chacun des champs présents dans l'​objet,​ soit appel du constructeur spécifique selon l'​ordre défini dans le constructeur,​ soit pour l'​ensemble des champs non présent dans la liste des    
  
  
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.
  
  
in204/cpp/syntax/class/constructor.1568814617.txt.gz · Last modified: 2019/09/18 13:50 by 147.250.222.245