Outils pour utilisateurs

Outils du site


lang:cpp:classes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:cpp:classes [2025/07/26 23:50] – Précision sur l'héritage et les méthodes virtuelles rootlang:cpp:classes [2025/07/28 13:38] (Version actuelle) – [Version "Rule of Zero"] : clarification du commentaire ''does not have a user-declared'' root
Ligne 1: Ligne 1:
 =====Sans héritage===== =====Sans héritage=====
- 
-====Multiples constructeurs==== 
-Il est possible d'appeler un constructeur depuis un autre constructeur. C'est pratique si on souhaite avoir deux constructeurs très proche. 
- 
-Bien qu'on soit dans le paragraphe sans héritage, j'ai mis un cas avec héritage pour montrer qu'on a pas besoin d'appeler le constructeur du parent si on appelle un autre constructeur. 
- 
-<code cpp> 
-class A{}; 
-class B : public A 
-{ 
- public: 
-  // Call constructor B(int) from constructor B(). 
-  // No need (forbidden) to call A. 
-  B() : B(5){} 
-  // Avoid default function argument 
-  B(int a/* = 5*/):A(), a_(a){} 
- 
- private: 
-  int a_; 
-}; 
-</code> 
  
 ====Version "Rule of Zero"==== ====Version "Rule of Zero"====
Ligne 50: Ligne 29:
 <cite>[[https://stackoverflow.com/questions/40959659/c-rule-of-zero-what-is-user-declared-constructor|C++ Rule of Zero & what is "user-declared" constructor?]] {{ :lang:cpp:class:c_rule_of_zero_what_is_user-declared_constructor_-_stack_overflow_2020-03-09_23_01_28_.html |Archive du 04/12/2016 le 09/03/2020}}</cite></blockquote> <cite>[[https://stackoverflow.com/questions/40959659/c-rule-of-zero-what-is-user-declared-constructor|C++ Rule of Zero & what is "user-declared" constructor?]] {{ :lang:cpp:class:c_rule_of_zero_what_is_user-declared_constructor_-_stack_overflow_2020-03-09_23_01_28_.html |Archive du 04/12/2016 le 09/03/2020}}</cite></blockquote>
  
-Par ''does not have a user-declared'', cela signifie aussi ne pas utiliser ''= default;''.+''does not have a user-declared'' signifie également ne pas utiliser ''= default;''.
  
 Autre explication : [[https://www.fluentcpp.com/2019/04/23/the-rule-of-zero-zero-constructor-zero-calorie/|The Rule of Zero in C++]] {{ :lang:cpp:class:the_rule_of_zero_in_c_-_fluent_c_2019-12-18_23_16_30_.html |Archive du 23/04/2019 le 18/12/2019}} Autre explication : [[https://www.fluentcpp.com/2019/04/23/the-rule-of-zero-zero-constructor-zero-calorie/|The Rule of Zero in C++]] {{ :lang:cpp:class:the_rule_of_zero_in_c_-_fluent_c_2019-12-18_23_16_30_.html |Archive du 23/04/2019 le 18/12/2019}}
Ligne 585: Ligne 564:
  
 Lors de l'instantiation d'une classe, un constructeur sera systématiquement appelé à chaque niveau d'héritage, en commençant par celui en bas de la hiérarchie. Lors de l'instantiation d'une classe, un constructeur sera systématiquement appelé à chaque niveau d'héritage, en commençant par celui en bas de la hiérarchie.
 +
 +Il est possible d'appeler un constructeur depuis un autre constructeur. C'est pratique si on souhaite avoir deux constructeurs très proche.
 +
 +<code cpp>
 +class A{};
 +class B : public A
 +{
 + public:
 +  // Call constructor B(int) from constructor B().
 +  // No need (forbidden) to call A.
 +  B() : B(5){}
 +  // Avoid default function argument
 +  B(int a/* = 5*/):A(), a_(a){}
 +
 + private:
 +  int a_;
 +};
 +</code>
  
   * Destructeur   * Destructeur
lang/cpp/classes.1753566659.txt.gz · Dernière modification : de root