User Tools

Site Tools


in204:cpp:syntax:class:constructor:default

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:default [2019/09/19 07:23]
86.242.52.10 created
in204:cpp:syntax:class:constructor:default [2022/11/18 10:50] (current)
Line 31: Line 31:
   * Pour des champs ayant comme type un type objet, le constructeur par défaut de la classe est automatiquement appelé. Cependant, si aucun constructeur par défaut n'est définit pour la classe, une erreur de compilation est générée.   * Pour des champs ayant comme type un type objet, le constructeur par défaut de la classe est automatiquement appelé. Cependant, si aucun constructeur par défaut n'est définit pour la classe, une erreur de compilation est générée.
  
-  * Pour des champs pour lesquels il est [[in204:​cpp:​syntax:​class:​default_value|spécifié une valeur par défaut], le champ prend cette valeur par défaut.+  * Pour des champs pour lesquels il est [[in204:​cpp:​syntax:​class:fields:​default_value|spécifié une valeur par défaut]], le champ prend cette valeur par défaut.
  
 +===== Génération automatique du constructeur par défaut =====
 +
 +En l'​absence de tout autre [[in204:​cpp:​syntax:​class:​constructor:​spezialized|constructeur spécialisé]],​ un constructeur par défaut est automatiquement généré. ​
 +
 +Ce constructeur par défaut est :
 +  * public,
 +  * il appelle pour chacun des champs de la classe et des [[in204:​cpp:​syntax:​class:​deriving|classes de bases]] soit le constructeur,​ soit procède à l'​affectation de la [[in204:​cpp:​syntax:​class:​fields:​default_value|valeur par défaut]], soit procède à l'​initialisation par défaut du type (qui peut consister justement à ne rien faire). ​
 +  * le corps du constructeur est vide.
 +
 +Pour la classe ''​MyClass''​ dérivant des classes ''​BaseClass''​ et ''​ImplementationClass''​ et possédant un champ entier ''​value'',​ le constructeur par défaut généré automatiquement correspond au constructeur suivant
 +
 +<code cpp>
 +class MyClass: ​
 +  public BaseClass, ​
 +  private ImplementationClass
 +{
 +    private:
 +        int value;
 +    public:
 +        MyClass(): BaseClass(),​ ImplementationClass(), ​
 +            value() // Correspond au constructeur par défaut généré automatiquement
 +                    // en C++.
 +        {}
 +}; 
 +</​code>​
 +
 +Comme corollaire, pour pouvoir générer automatiquement un constructeur par défaut, il est impératif que l'​ensemble des champs et des classes de bases exposent un constructeur par défaut ou un mécanisme d'​initialisation par défaut. Si ce n'est pas le cas, le compilateur ne génèrera pas de constructeur par défaut. ​
  
  
in204/cpp/syntax/class/constructor/default.1568877796.txt.gz · Last modified: 2019/09/19 07:23 by 86.242.52.10