Mémoire et ressources
Maîtrisez le modèle de propriété du C++ — des pointeurs bruts aux pointeurs intelligents en passant par la sémantique de déplacement — pour écrire du code qui ne fuit jamais.
Pointeurs et références
Pointeurs : adresses, déréférencement et arithmétique
Comprenez les pointeurs en tant qu'adresses mémoire, apprenez les opérateurs d'adresse et de déréférencement, l'arithmétique des pointeurs dans les tableaux, la const-correction avec les pointeurs, et quand les pointeurs bruts restent appropriés en C++ moderne.
Références : lvalue, rvalue et pièges
Explorez les références lvalue et rvalue, comprenez les catégories de valeur du C++, apprenez les règles de fusion des références et les références de transfert, et évitez les bogues de références pendantes.
Mémoire dynamique : new, delete et leurs dangers
Apprenez comment fonctionne l'allocation dynamique avec new et delete, comprenez les dangers des fuites de mémoire, des doubles libérations et des utilisations après libération, et découvrez pourquoi le C++ moderne ne devrait contenir aucun new/delete brut.
Pointeurs intelligents
std::unique_ptr : la propriété exclusive
Découvrez comment std::unique_ptr offre une propriété exclusive sans surcoût, comment utiliser make_unique, les suppresseurs personnalisés pour les ressources C et les fonctions fabriques.
shared_ptr, weak_ptr et graphes de propriété
Comprenez la propriété partagée par comptage de références avec shared_ptr, brisez les cycles avec weak_ptr, découvrez les blocs de contrôle et l'aliasing, et sachez quand shared_ptr n'est pas le bon choix.
Sémantique de déplacement et RAII
Sémantique de déplacement et std::move
Comprenez le problème que résout la sémantique de déplacement, pourquoi std::move est une conversion (et non un déplacement), implémentez le constructeur de déplacement et l'assignation par déplacement, et découvrez pourquoi noexcept est crucial pour les performances des conteneurs.
Transfert parfait et std::forward
Comprenez pourquoi les références rvalue nommées sont des lvalues, apprenez le schéma canonique de transfert avec std::forward, et voyez comment emplace_back utilise le transfert variadique pour construire les objets sur place.
RAII : le patron fondamental de gestion des ressources
Découvrez le RAII (Resource Acquisition Is Initialization, « l'acquisition d'une ressource est une initialisation ») — le patron central du C++ pour une gestion des ressources sûre vis-à-vis des exceptions. Implémentez des enveloppes RAII, comprenez lock_guard et scoped_lock, et apprenez pourquoi les types RAII doivent être déplaçables uniquement ou à comptage de références.