lang:cpp:classes
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
lang:cpp:classes [2021/06/22 00:05] – Ajout de "vtable" root | lang: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' | ||
- | |||
- | 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' | ||
- | |||
- | <code cpp> | ||
- | class A{}; | ||
- | class B : public A | ||
- | { | ||
- | | ||
- | // 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){} | ||
- | |||
- | | ||
- | int a_; | ||
- | }; | ||
- | </ | ||
====Version "Rule of Zero" | ====Version "Rule of Zero" | ||
Ligne 26: | Ligne 5: | ||
Cette règle s' | Cette règle s' | ||
- | Il est aussi conseillé de réduire son utilisation aux classes n' | + | Il est aussi conseillé de réduire son utilisation aux classes n' |
<code cpp> | <code cpp> | ||
Ligne 34: | Ligne 13: | ||
// Constructor. | // Constructor. | ||
Class() = default; | Class() = default; | ||
- | // Pas de destructeur. Pas de copy/move contructor/ | + | // Pas de définition explicite du destructeur, |
+ | // ni de copy/move contructor/ | ||
} | } | ||
</ | </ | ||
Ligne 49: | Ligne 29: | ||
< | < | ||
- | Par '' | + | '' |
Autre explication : [[https:// | Autre explication : [[https:// | ||
Ligne 91: | Ligne 71: | ||
===Destructeur=== | ===Destructeur=== | ||
- | Une classe doit avoir un destruteur | + | Une classe doit avoir un destructeur |
L' | L' | ||
Ligne 172: | Ligne 152: | ||
std::mutex io_mutex; | std::mutex io_mutex; | ||
{ | { | ||
- | std::lock_guard< | + | std::scoped_lock< |
std::cout << e1.id << " and " << e2.id << " are waiting for locks" << std::endl; | std::cout << e1.id << " and " << e2.id << " are waiting for locks" << std::endl; | ||
// le mutex est automatiquement libéré lors de l' | // le mutex est automatiquement libéré lors de l' | ||
Ligne 584: | Ligne 564: | ||
Lors de l' | Lors de l' | ||
+ | |||
+ | Il est possible d' | ||
+ | |||
+ | <code cpp> | ||
+ | class A{}; | ||
+ | class B : public A | ||
+ | { | ||
+ | | ||
+ | // 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){} | ||
+ | |||
+ | | ||
+ | int a_; | ||
+ | }; | ||
+ | </ | ||
* Destructeur | * Destructeur |
lang/cpp/classes.1624313133.txt.gz · Dernière modification : de root