Effektives modernes C++

Scott Meyers

Diese Publikation zitieren

Scott Meyers, Effektives modernes C++ (2015), O'Reilly Verlag, Heidelberg, ISBN: 9783958750500

2406
Accesses
6
Quotes

Beschreibung / Abstract

Um richtig in C++11 und C++14 einzusteigen, reicht es nicht aus, sich mit den neuen Features vertraut zu machen. Die Herausforderung liegt darin, sie effektiv einzusetzen, so dass Ihre Software korrekt, effizient, wartbar und portabel ist. Hier kommt dieses praxisnahe Buch ins Spiel: Es beschreibt, wie Sie wirklich gute Software mit C++11 und C++14 erstellen - also modernes C++ einsetzen. Scott Meyers' Effective C++-Bestseller gelten seit mehr als 20 Jahren als herausragende C++-Ratgeber. Seine klaren, verbindlichen Erläuterungen komplexer technischer Materie haben ihm eine weltweite Anhängerschaft beschert. In diesem Buch nutzt Scott Meyers wieder das bewährte beispielorientierte Konzept seiner früheren Bücher, um Ihnen den optimalen Einsatz von C++11 und C++14 zu veranschaulichen. Das Buch ist Pflichtlektüre für jeden modernen C++-Softwareentwickler.

Inhaltsverzeichnis

  • BEGINN
  • Inhalt
  • Danksagung
  • Kapitel – Einleitung
  • Begriffe und Konventionen
  • Fehler und Verbesserungsvorschläge
  • Verwendung der Codebeispiele
  • Kontakt
  • Kapitel 1 – Typen ableiten
  • Technik 1: Typableitung beim Template
  • Technik 2: Die auto-Typableitung verstehen
  • Technik 3: Verstehen Sie decltype
  • Technik 4: Zeigen Sie abgeleitete Typen an
  • Kapitel 2 – auto
  • Technik 5: Ziehen Sie auto einer expliziten Typdeklaration vor
  • Technik 6: Nutzen Sie explizit typisierte Initializer, wenn auto unerwünschte Typen ableitet
  • Kapitel 3 – Der Wechsel zu modernem C++
  • Technik 7: Der Unterschied zwischen () und {} beim Erstellen von Objekten
  • Technik 8: Nutzen Sie nullptr statt 0 oder NULL
  • Technik 9: Nutzen Sie Alias-Deklarationen statt typedefs
  • Technik 10: Nutzen Sie enums mit Gültigkeitsbereich
  • Technik 11: Nutzen Sie gelöschte statt private, undefinierte Funktionen
  • Technik 12: Deklarieren Sie überschreibende Funktionen per override
  • Technik 13: Nutzen Sie const_iterator statt iterator
  • Technik 14: Deklarieren Sie Funktionen als noexcept, wenn sie keine Exceptions auslösen werden
  • Technik 15: Verwenden Sie nach Möglichkeit immer constexpr
  • Technik 16: Machen Sie const-Member-Funktionen Thread-sicher
  • Technik 17: Verstehen Sie, wie spezielle Member-Funktionen generiert werden
  • Kapitel 4 – Smart Pointer
  • Technik 18: Verwenden Sie std::unique_ptr zum Verwalten exklusiver Ressourcen
  • Technik 19: Verwenden Sie std::shared_ptr für das Verwalten von gemeinsam genutzten Ressourcen
  • Technik 20: Verwenden Sie std::weak_ptr für std::shared_ptr-artige Zeiger, die hängen können
  • Technik 21: Verwenden Sie std::make_unique und std::make_shared statt new
  • Technik 22: Definieren Sie spezielle Member-Funktionen in der Implementierungsdatei, wenn Sie das Pimpl-Idiom verwenden
  • Kapitel 5 – Rvalue-Referenzen, Move-Semantik und Perfect Forwarding
  • Technik 23: Verstehen Sie std::move und std::forward
  • Technik 24: Unterscheiden Sie zwischen universellen Referenzen und Rvalue-Referenzen
  • Technik 25: Verwenden Sie std::move bei Rvalue-Referenzen und std::forward bei universellen Referenzen
  • Technik 26: Vermeiden Sie das Überladen mit universellen Referenzen
  • Technik 27: Machen Sie sich mit Alternativen zum Überladen mit universellen Referenzen vertraut
  • Technik 28: Verstehen Sie das Reference Collapsing
  • Technik 29: Gehen Sie davon aus, dass Move-Operationen nicht vorhanden, nicht günstig oder nicht einsetzbar sind
  • Technik 30: Machen Sie sich mit den Problemfällen beim Perfect Forwarding vertraut
  • Kapitel 6 – Lambda-Ausdrücke
  • Technik 31: Vermeiden Sie Standard-Capture-Modi
  • Technik 32: Nutzen Sie ein Init Capture, um Objekte in Closures zu verschieben
  • Technik 33: Nutzen Sie decltype für auto&&-Parameter, um sie per std::forward weiterzuleiten
  • Technik 34: Nutzen Sie Lambdas statt std::bind
  • Kapitel 7 – Die Concurrency-API
  • Technik 35: Programmieren Sie Task-basiert statt Thread-basiert
  • Technik 36: Geben Sie std::launch::async an, wenn Asynchronität entscheidend ist
  • Technik 37: Sorgen Sie dafür, dass std::threads auf allen Ablaufpfaden nicht zusammenführbar sind
  • Technik 38: Berücksichtigen Sie das unterschiedliche Verhalten beim Zerstören von Thread-Handles
  • Technik 39: Nutzen Sie void-Futures für die einmalige Kommunikation von Ereignissen
  • Technik 40: Verwenden Sie std::atomic in Concurrency-Situationen und volatile für spezielle Speicherbereiche
  • Kapitel 8 – Wertübergabe und Emplacement
  • Technik 41: Erwägen Sie die Wertübergabe bei kopierbaren Parametern, die sich mit wenig Aufwand verschieben lassen und die immer kopiert werden
  • Technik 42: Erwägen Sie den Einsatz von Emplacement statt Einfügen
  • Index
  • Über den Autor
  • Über den Übersetzer
  • Kolophon

Ähnliche Titel

    Mehr von diesem Autor