Kursinhalt
C++ Smart Pointers
C++ Smart Pointers
Shared Pointer Funktionen zum Erinnern
Wir haben bereits erkundet, was Shared Pointers sind und wie man sie erstellt und teilt. Jetzt schauen wir uns einige wichtige Funktionen und Operatoren an, die Shared Pointers noch leistungsfähiger und flexibler machen.
Die reset-Funktion
Die reset
-Funktion ermöglicht es Ihnen, einen Shared Pointer zurückzusetzen, d.h. seine Eigentümerschaft am dynamischen Objekt freizugeben. Wenn Sie reset
aufrufen, verringert sich der Referenzzähler, und wenn keine anderen Shared Pointers auf das referenzierte Objekt verweisen, wird der Speicher automatisch freigegeben.
Hinweis
Wenn andere Shared Pointers auf das Objekt verweisen, verringert sich der Referenzzähler. Nichtsdestotrotz bleibt das Objekt bestehen, bis alle Shared Pointers zurückgesetzt oder außer Geltung geraten sind. Diese Funktion erfüllt effektiv zwei Zwecke.
Beim Neuzuweisen eines Shared Pointers
Wenn Sie ein neues Objekt als Argument an die reset
-Funktion übergeben, zeigt der Shared Pointer auf das neue Objekt.
Im obigen Code weisen wir sharedPtr
einer neuen Instanz von MyClass
zu.
Beim Freigeben des Besitzes
Wenn Sie reset
ohne Parameter aufrufen, hört der Shared Pointer einfach auf, auf das dynamische Objekt zu zeigen.
Im obigen Code geben wir einfach den Besitz des dynamischen Integers von sharedInt
frei.
Die swap-Funktion
Verwenden Sie die swap
-Funktion, wenn Sie den Inhalt von zwei Shared Pointern austauschen möchten. Denken Sie daran, dass beim Austauschen von zwei Shared Pointern auch ihre Referenzzähler und die Eigentümerschaft der dynamischen Objekte ausgetauscht werden.
Im obigen Code tauschen wir zwei Shared Pointer aus, die beide auf dynamische Ganzzahlen zeigen. Nachdem der Code ausgeführt wurde, wird sharedInt1
den Wert 99 halten, während sharedInt2
den Wert 42 halten wird.
Die get-Funktion
Genau wie eindeutige Zeiger hält jeder Shared Pointer einen rohen Zeiger auf das dynamische Objekt. Sie können die get
-Funktion verwenden, um den rohen Zeiger abzurufen, ohne die Referenzanzahl zu beeinflussen.
Im obigen Code extrahieren wir einen rohen Zeiger aus einem Shared Pointer. Dies kann notwendig sein, wenn man mit Legacy-Code arbeitet, der keine Smart Pointer unterstützt.
Die Funktion use_count
Die Funktion use_count
ermöglicht es Ihnen, die aktuelle Referenzanzahl eines Shared Pointers zu überprüfen. Sie ist besonders nützlich zum Debuggen und um sicherzustellen, dass das gemeinsame Eigentum wie erwartet funktioniert.
Im obigen Code verwenden wir die Funktion use_count
, um die aktuelle Referenzanzahl des Shared Pointers zu erhalten.
Operatoren für Shared Pointer
Shared Pointer bieten mehrere Operatoren, um C++-Code prägnanter und lesbarer zu machen. Zum Beispiel:
- Die Operatoren
==
und!=
ermöglichen es Ihnen, einen Shared Pointer mit einem anderen Shared Pointer oder mitnullptr
zu vergleichen. - Der Dereferenzierungsoperator
*
bietet Zugriff auf das dynamische Objekt, auf das der Shared Pointer zeigt. - Der Pfeiloperator
->
erleichtert den Zugriff auf die Mitglieder des Objekts, auf das der Shared Pointer zeigt.
Danke für Ihr Feedback!