Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Wann Referenzen vs. Smart Pointers vs. Rohe Zeiger Verwendet Werden | Referenzen
C++ Smart Pointers
course content

Kursinhalt

C++ Smart Pointers

C++ Smart Pointers

1. Einführung in Smart Pointer
2. Einzigartige Zeiger
3. Gemeinsame Zeiger
4. Schwache Zeiger
5. Referenzen
6. Fortgeschrittene Themen

book
Wann Referenzen vs. Smart Pointers vs. Rohe Zeiger Verwendet Werden

Bietet mehrere Werkzeuge für das Speichermanagement, einschließlich Referenzen, Smart-Pointer und rohe Pointer. Um sicheren und effizienten Code zu schreiben, ist es wichtig, die spezifischen Szenarien zu verstehen, in denen jedes dieser Werkzeuge die anderen übertreffen kann.

Wann sollten Referenzen verwendet werden?

Als allgemeine Regel gilt, dass Referenzen immer Pointern vorzuziehen sind, da sie sicherer und einfacher zu handhaben sind. Damit gesagt, hier sind einige spezifische Anwendungsfälle für Referenzen:

  • Sie möchten eine sauberere und besser lesbare Syntax. Referenzen benötigen keine Dereferenzierung und sind einfacher zu verwalten.

  • Sie möchten die Nicht-Nullbarkeit bis zu einem gewissen Grad erzwingen. Referenzen können nicht explizit auf NULL gesetzt werden.

  • Sie möchten eine lokale Variable an eine Funktion übergeben, ohne Kopien zu erstellen. Referenzen sind nur Aliase des ursprünglichen Objekts.

Wann sollten Sie Smart Pointer verwenden?

Die goldene Regel ist, Zeiger (sowohl rohe als auch smarte) zu vermeiden, bis es nicht mehr anders geht. Der Grund dafür ist, dass Zeiger schwerer zu verwalten sind und kleine Fehler zu Problemen wie Speicherlecks und hängenden Zeigern führen können. Dennoch gibt es einige Szenarien, in denen die Verwendung von Zeigern die richtige Wahl ist:

  • Sie möchten die Eigentümerschaft von dynamisch zugewiesenen Objekten verwalten. Smart Pointer sind in dieser Hinsicht hervorragend, da sie die Ressourcenbereinigung auch im Falle von Ausnahmen automatisieren.

  • Sie möchten die gemeinsame Eigentümerschaft einer dynamischen Ressource aufrechterhalten. In einer solchen Situation sind Shared Pointer die perfekte Wahl, da sie Referenzzählung durchführen, um die Lebensdauer gemeinsam genutzter Objekte zu verwalten.

  • Sie möchten exklusive Eigentümerschaft einer dynamischen Ressource erzwingen, sodass kein anderer Zeiger darauf zugreifen kann. Dieser Anwendungsfall kann durch die Verwendung eines Unique Pointers erfüllt werden.

Wann sollten Sie rohe Zeiger verwenden?

Rohe Zeiger sollten nur in Betracht gezogen werden, wenn Referenzen und Smart Pointer nicht machbar sind. Der Grund ist, dass rohe Zeiger keine Speichersicherheit bieten und einer der Hauptgründe sind, warum Programme abstürzen. Dennoch gibt es einige gerechtfertigte Anwendungsfälle für rohe Zeiger:

  • Sie arbeiten mit C-Style-Bibliotheken. Da C keine Smart-Pointer unterstützt, sind Sie möglicherweise gezwungen, rohe Zeiger zu verwenden.

  • Sie schreiben leistungsrelevanten Code, bei dem der Overhead von Smart-Pointern ein Problem darstellt. Zum Beispiel könnten Sie eine intensive eingebettete Anwendung entwickeln, die in einer ressourcenbeschränkten Umgebung laufen muss.

  • Sie arbeiten mit Legacy-Code, der vor der Einführung von Smart-Pointern entstanden ist. In solchen Fällen könnten rohe Zeiger Ihre einzige Option sein.

Beim Schreiben von C++-Code, was sollte Ihre erste Wahl zwischen Referenzen, Smart-Pointern und Referenzen sein?

Beim Schreiben von C++-Code, was sollte Ihre erste Wahl zwischen Referenzen, Smart-Pointern und Referenzen sein?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3
We're sorry to hear that something went wrong. What happened?
some-alt