lang:cpp:smartptr
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:smartptr [2022/10/18 13:30] – Ajout de "indirect_value" root | lang:cpp:smartptr [2024/01/11 17:00] (Version actuelle) – Ajout de "Différencier empty et expired" root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{ : | {{ : | ||
- | ====std:: | + | ====Durée de vie==== |
- | Il faut utiliser | + | |
+ | Lors d'un '' | ||
<code cpp> | <code cpp> | ||
- | std::map<U, T, std::owner_less<U>> | + | #include < |
+ | #include < | ||
+ | |||
+ | class A { | ||
+ | | ||
+ | A() { std::cout << " | ||
+ | ~A() { std::cout << " | ||
+ | }; | ||
+ | |||
+ | int main() { | ||
+ | std:: | ||
+ | a.reset(new A()); | ||
+ | a = std:: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Sortie : | ||
+ | |||
+ | < | ||
+ | Constructor | ||
+ | Constructor | ||
+ | Destructor | ||
+ | Constructor | ||
+ | Destructor | ||
+ | Destructor | ||
</ | </ | ||
Ligne 121: | Ligne 147: | ||
f (const) | f (const) | ||
g (const) | g (const) | ||
+ | </ | ||
+ | |||
+ | ====Encapsuler fopen/ | ||
+ | |||
+ | <code cpp> | ||
+ | std:: | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ====weak_ptr==== | ||
+ | |||
+ | ====std:: | ||
+ | Il faut utiliser le comparateur '' | ||
+ | <code cpp> | ||
+ | std:: | ||
+ | </ | ||
+ | |||
+ | ===Différencier empty et expired=== | ||
+ | |||
+ | Sans passer par '' | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | class A {}; | ||
+ | |||
+ | int main() { | ||
+ | { | ||
+ | std:: | ||
+ | |||
+ | if (!aa.owner_before(std:: | ||
+ | std::cout << " | ||
+ | } | ||
+ | if (aa.expired()) { | ||
+ | std::cout << " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | { | ||
+ | std:: | ||
+ | std:: | ||
+ | |||
+ | if (!aa.owner_before(std:: | ||
+ | std::cout << " | ||
+ | } | ||
+ | if (aa.expired()) { | ||
+ | std::cout << " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | { | ||
+ | std:: | ||
+ | { | ||
+ | std:: | ||
+ | aa = a; | ||
+ | |||
+ | if (!aa.owner_before(std:: | ||
+ | std::cout << " | ||
+ | } | ||
+ | if (aa.expired()) { | ||
+ | std::cout << " | ||
+ | } | ||
+ | } | ||
+ | if (!aa.owner_before(std:: | ||
+ | std::cout << " | ||
+ | } | ||
+ | if (aa.expired()) { | ||
+ | std::cout << " | ||
+ | } | ||
+ | } | ||
+ | return 0; | ||
+ | } | ||
</ | </ |
lang/cpp/smartptr.1666092617.txt.gz · Dernière modification : 2022/10/18 13:30 de root