helloworld:design_pattern:pont:cpp
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| helloworld:design_pattern:pont:cpp [2019/10/29 14:32] – Création root | helloworld:design_pattern:pont:cpp [2025/10/30 15:20] (Version actuelle) – Détail de l'implémentation de pimpl root | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | Interface (entête) : | + | Interface (entête) |
| <code cpp> | <code cpp> | ||
| + | #pragma once | ||
| + | |||
| #include < | #include < | ||
| class Fridge | class Fridge | ||
| { | { | ||
| - | public: | + | public: |
| - | | + | Fridge(); |
| - | | + | |
| - | private: | + | Fridge(Fridge&& |
| - | | + | Fridge& operator=(const Fridge& other) = delete; |
| - | | + | Fridge& operator=(Fridge&& |
| + | ~Fridge(); | ||
| + | | ||
| + | | ||
| + | class FridgeImpl; | ||
| + | std:: | ||
| }; | }; | ||
| </ | </ | ||
| Ligne 22: | Ligne 29: | ||
| class Fridge:: | class Fridge:: | ||
| { | { | ||
| - | public: | + | public: |
| - | | + | void coolDown() |
| - | | + | { |
| - | std::cout << " | + | std::cout << " |
| - | | + | } |
| - | private: | + | |
| - | | + | int engine_; |
| }; | }; | ||
| Fridge:: | Fridge:: | ||
| + | Fridge:: | ||
| + | Fridge& Fridge:: | ||
| + | Fridge:: | ||
| void Fridge:: | void Fridge:: | ||
| </ | </ | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | =====Détail==== | ||
| + | |||
| + | Pourquoi tout ça ? | ||
| + | |||
| + | ====Version de base==== | ||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | class A { | ||
| + | | ||
| + | struct Aimpl; | ||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | int main() { auto p = std:: | ||
| + | </ | ||
| + | |||
| + | Erreur : '' | ||
| + | |||
| + | ====Version 2==== | ||
| + | |||
| + | Il faut empêcher de mettre '' | ||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | class A { | ||
| + | | ||
| + | A(); | ||
| + | ~A(); | ||
| + | |||
| + | | ||
| + | struct Aimpl; | ||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | int main() { auto p = std:: | ||
| + | </ | ||
| + | |||
| + | Erreur : '' | ||
| + | |||
| + | ====Version 3==== | ||
| + | |||
| + | Ajout du constructeur et de l' | ||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | class A { | ||
| + | | ||
| + | A(); | ||
| + | ~A(); | ||
| + | A(A&& | ||
| + | A& operator=(A&& | ||
| + | |||
| + | | ||
| + | struct Aimpl; | ||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | int main() { | ||
| + | auto p = std:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Erreur : '' | ||
| + | |||
| + | ====Version 4==== | ||
| + | |||
| + | Même problème que '' | ||
| + | |||
| + | |||
| + | <code cpp> | ||
| + | #include < | ||
| + | |||
| + | class A { | ||
| + | | ||
| + | A(); | ||
| + | A(A&& | ||
| + | A& operator=(A&& | ||
| + | ~A(); | ||
| + | |||
| + | | ||
| + | struct Aimpl; | ||
| + | std:: | ||
| + | }; | ||
| + | |||
| + | int main() { | ||
| + | auto p = std:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Il faut bien sûr implémenter '' | ||
helloworld/design_pattern/pont/cpp.1572355926.txt.gz · Dernière modification : de root
