Kursinhalt
C++ Smart Pointers
C++ Smart Pointers
Der Ultimative Leitfaden zu Shared-, Unique- und Weak-Pointern
Im letzten theoretischen Kapitel unseres Kurses werden wir alle bisher gelernten Konzepte verstärken, um eine umfassende Vergleichstabelle zu erstellen. Diese Tabelle dient als praktischer Leitfaden, um uns bei der Auswahl des am besten geeigneten Smart-Pointers für verschiedene Anforderungen des dynamischen Speichermanagements zu unterstützen.
Ownership semantics | Erlaubt mehreren Zeigern, das Eigentum eines Objekts zu teilen | Exklusives Eigentum; nur ein Zeiger kann ein Objekt besitzen | Nicht-besitzende Zeiger; beeinflussen die Lebensdauer des Objekts nicht |
Construction | Erstellt mit std::make_shared oder std::shared_ptr | Erstellt mit std::make_unique oder std::unique_ptr | Keine direkte Konstruktion; abgeleitet von geteilten Zeigern |
Suitability | Geeignet für Szenarien, die geteiltes Eigentum erfordern | Ideal für Szenarien, die exklusives Eigentum benötigen | Bricht zyklische Abhängigkeiten |
Use cases | Geteilte Datenbankressource; geteiltes Zählerobjekt etc. | Eine Datenbankressource, die ausschließlich von einer Klasse besessen wird; ein dynamisches Zählerobjekt, das exklusiv zu einer Klasse gehört etc. | Um schwache Knoten in einem Graphen oder einer verketteten Liste darzustellen; um Beobachtermuster zu implementieren |
Memory overhead | Höher, aufgrund der Referenzzählung zur Verfolgung des Eigentums | Geringer als bei geteilten Zeigern, da keine Referenzzählung erforderlich ist | Vernachlässigbarer Overhead; abhängig von der Nutzung des geteilten Zeigers |
Performance impact | Höchster, aufgrund der Referenzzählung | Geringer, da keine Referenzzählung erforderlich ist | Minimal; nur ein Beobachter |
Copyability | Möglich | Nicht möglich | Möglich |
Assignability | Zuweisbar | Nicht zuweisbar | Zuweisbar |
Memory cleanup | Wird freigegeben, wenn der Referenzzähler null erreicht | Automatisch freigegeben, wenn der besitzende Zeiger den Gültigkeitsbereich verlässt | Keine Auswirkung auf die Lebensdauer des Objekts |
Circular references | Möglich | Nicht möglich | Nicht anwendbar |
Exception safety | Sicher | Sicher | Sicher |
War alles klar?
Danke für Ihr Feedback!
Abschnitt 6. Kapitel 4