Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erstellen und Teilen von Shared Pointers | Gemeinsame Zeiger
C++ Smart Pointers
course content

Kursinhalt

C++ Smart Pointers

C++ Smart Pointers

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

book
Erstellen und Teilen von Shared Pointers

Der empfohlene Ansatz

Der empfohlene Weg, um einen Shared Pointer zu erstellen, ist die Verwendung der Funktion std::make_shared. Dieser Ansatz ist im Allgemeinen effizienter und ausdrucksstärker im Vergleich zur Verwendung von new. Er allokiert Speicher für das Objekt und den Kontrollblock (Referenzzähler) in einem einzigen Schritt. Zum Beispiel:

h

make_shared

copy
12
// Create a shared pointer to an integer std::shared_ptr<int> p_int = std::make_shared<int>(42);

Die obige Zeile allokiert eine dynamische Ganzzahl und initialisiert auch einen Shared Pointer darauf mit einem Referenzzähler von eins.

Der Entmutigte Ansatz

Sie können auch Shared Pointers mit new erstellen, aber diese Methode wird nicht empfohlen, da sie weder ausdrucksstark noch effizient ist. Die Syntax für diesen Ansatz erfordert, dass Sie das Objekt an den Konstruktor des Shared Pointers übergeben.

h

creating_shared_pointer

copy
12
// Also creates a shared pointer to an integer std::shared_ptr<int> p_int(new int(42));

Zuweisung eines dynamischen Integers und anschließendes Übergeben an den Konstruktor des Shared Pointers. Der Kontrollblock (Referenzzähler) wird jedoch im Konstruktor initialisiert.

Das bedeutet, dass wir zwei separate Initialisierungen durchführen, was ineffizient ist und Fehler erzeugt werden könnten.

Weitergabe von Shared Pointers

Shared Pointers sind speziell für sicheres Teilen entwickelt. Lassen Sie uns einige Möglichkeiten erkunden, wie wir sie weitergeben können.

question mark

Wenn vier shared_ptr Instanzen das Eigentum an demselben dynamischen Objekt teilen, wann wird der Destruktor des Objekts aufgerufen?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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