Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Effektives modernes C++
Widmung
Danksagung
Einleitung
Begriffe und Konventionen
Fehler und Verbesserungsvorschläge
Verwendung der Codebeispiele
Kontakt
1. Typen ableiten
Technik 1: Typableitung beim Template
Fall 1: ParamType ist eine Referenz oder ein Zeiger, aber keine universelle Referenz
Fall 2: ParamType ist eine universelle Referenz
Fall 3: ParamType ist weder ein Zeiger noch eine Referenz
Array-Argumente
Funktionsargumente
Technik 2: Die auto-Typableitung verstehen
Technik 3: Verstehen Sie decltype
Technik 4: Zeigen Sie abgeleitete Typen an
IDE-Editoren
Compiler-Diagnose
Ausgabe zur Laufzeit
2. auto
Technik 5: Ziehen Sie auto einer expliziten Typdeklaration vor
Technik 6: Nutzen Sie explizit typisierte Initializer, wenn auto unerwünschte Typen ableitet
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
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 haä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
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
Kein Überladen mehr
Übergabe als const T&
Übergabe By-Value
Tag Dispatching
Templates mit universellen Referenzen einschränken
Abwägungen
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
Braced Initializers
0 oder NULL als Null-Zeiger
Rein deklarierte ganzzahlige static const-Attribute
Überladene Funktions- und Template-Namen
Bitfelder
Ergebnis
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
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
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: Erwaägen Sie den Einsatz von Emplacement statt Einfügen
A. Über den Autor
B. Über den Übersetzer
Stichwortverzeichnis
Kolophon
Impressum
← Prev
Back
Next →
← Prev
Back
Next →