Programmer efficacement en C++ : 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14

"Le C++ 11 et plus encore le C++ 14 sont des évolutions significatives du langage C++. Cet ouvrage vous aidera non seulement à découvrir ce qui a changé, mais aussi à écrire du code qui soit correct, efficace, facile à maintenir et à porter. Son objectif n'est pas de décrire ce que vous de...

Fuld beskrivelse

Enregistré dans:
Bibliografiske detaljer
Hovedforfatter: Meyers, Scott, 1959-
Andre forfattere: Soulard, Hervé (Traducteur)
Format: Livre papier
Sprog:Français
Udgivet: Paris : Dunod DL 2016.
Fag:
Kommentar: Trad. de : "Effective modern C++"
Autres localisations: Voir dans le Sudoc
Variante du titre:Programmer efficacement en C plus-plus
Edition sous un autre format:• Programmer efficacement en C++, 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14, Scott Meyers, Paris, Dunod, 2016, 978-2-10-074846-4
Indholdsfortegnelse:
  • P. VII
  • Avant-propos
  • P. 1
  • Introduction
  • P. 9
  • Chapitre 1 - Déduction de type
  • P. 10
  • Conseil n˚1. Comprendre la déduction de type de template
  • P. 18
  • Conseil n˚2. Comprendre la déduction de type auto
  • P. 23
  • Conseil n˚3. Comprendre decltype
  • P. 30
  • Conseil n˚4. Afficher les types déduits
  • P. 37
  • Chapitre 2 - auto
  • P. 37
  • Conseil n˚5. Préférer auto aux déclarations de types explicites
  • P. 43
  • Conseil n˚6. Opter pour un initialiseur au type explicite lorsque auto déduit des types non souhaités
  • P. 49
  • Chapitre 3 - Vers un C++ moderne
  • P. 49
  • Conseil n˚7. Différencier () et {} lors de la création des objets
  • P. 58
  • Conseil n˚8. Préférer nullptr à 0 et à NULL
  • P. 62
  • Conseil n˚9. Préférer les déclarations d'alias aux typedef
  • P. 67
  • Conseil n˚10. Préférer les enum délimités aux enum non délimités
  • P. 73
  • Conseil n˚11. Préférer les fonctions supprimées aux fonctions indéfinies privées
  • P. 78
  • Conseil n˚12. Déclarer les fonctions de substitution avec override
  • P. 84
  • Conseil n˚13. Préférer les const_iterator aux iterator
  • P. 88
  • Conseil n˚14. Déclarer noexcept les fonctions qui ne lancent pas d'exceptions
  • P. 95
  • Conseil n˚15. Utiliser constexpr dès que possible
  • P. 101
  • Conseil n˚16. Rendre les fonctions membres const sûres vis-à-vis des threads
  • P. 106
  • Conseil n˚17. Comprendre la génération d'une fonction membre spéciale
  • P. 115
  • Chapitre 4 - Pointeurs intelligents
  • P. 116
  • Conseil n˚18. Utiliser std::unique_ptr pour la gestion d'une ressource à propriété exclusive
  • P. 122
  • Conseil n˚19. Utiliser std::shared_ptr pour la gestion d'une ressource à propriété partagée
  • P. 131
  • Conseil n˚20. Utiliser std::weak_ptr pour des pointeurs de type std::shared_ptr qui peuvent pendouiller
  • P. 136
  • Conseil n˚21. Préférer std::make_unique et std::make_shared à une utilisation directe de new
  • P. 144
  • Conseil n˚22. Avec l'idiome Pimpl, définir des fonctions membres spéciales dans le fichier d'implémentation
  • P. 153
  • Chapitre 5 - Références rvalue, sémantique du déplacement et transmission parfaite
  • P. 154
  • Conseil n˚23. Comprendre std::move et std::forward
  • P. 160
  • Conseil n˚24. Distinguer les références universelles et les références rvalue
  • P. 164
  • Conseil n˚25. Utiliser std::move sur des références rvalue, std::forward sur des références universelles
  • P. 173
  • Conseil n˚26. Éviter la surcharge sur les références universelles
  • P. 179
  • Conseil n˚27. Se familiariser avec les alternatives à la surcharge sur les références universelles
  • P. 191
  • Conseil n˚28. Comprendre la réduction de référence
  • P. 198
  • Conseil n˚29. Supposer que les opérations de déplacement sont absentes, onéreuses et inutilisées
  • P. 201
  • Conseil n˚30. Se familiariser avec les cas d'échec de la transmission parfaite
  • P. 211
  • Chapitre 6 - Expressions lambda
  • P. 212
  • Conseil n˚31. Éviter les modes de capture par défaut
  • P. 219
  • Conseil n˚32. Utiliser des captures généralisées pour déplacer des objets dans des fermetures
  • P. 225
  • Conseil n˚33. Utiliser decltype sur des paramètres auto&& pour les passer à std::forward
  • P. 228
  • Conseil n˚34. Préférer les expressions lambda à std::bind
  • P. 237
  • Chapitre 7 - L'API de concurrence
  • P. 237
  • Conseil n˚35. Préférer la programmation multitâche plutôt que multithread
  • P. 242
  • Conseil n˚36. Spécifier std::launch::async si l'asynchronisme est primordial
  • P. 246
  • Conseil n˚37. Rendre les std::thread non joignables par tous les chemins
  • P. 253
  • Conseil n˚38. Être conscient du comportement variable du destructeur du descripteur de thread
  • P. 257
  • Conseil n˚39. Envisager les futurs void pour communiquer ponctuellement un événement
  • P. 265
  • Conseil n˚40. Utiliser std::atomic pour la concurrence, volatile pour la mémoire spéciale
  • P. 275
  • Chapitre 8 - Finitions
  • P. 275
  • Conseil n˚41. Envisager un passage par valeur pour les paramètres copiables dont le déplacement est bon marché et qui sont toujours copiés
  • P. 285
  • Conseil n˚42. Envisager le placement plutôt que l'insertion
  • P. 295
  • Index