Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Einführung in Schwache Zeiger | Schwache 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
Einführung in Schwache Zeiger

Der Smart Pointer std::weak_ptr besitzt nicht das Objekt, auf das er zeigt. Das bedeutet im Wesentlichen, dass ein Weak Pointer die Referenzanzahl des Objekts nicht erhöht.

Ein std::weak_ptr ermöglicht den Zugriff auf ein von Shared Pointern verwaltetes Objekt, ohne dessen Lebensdauer zu verlängern. Wenn alle Shared Pointer außer Gültigkeit geraten, wird das Objekt gelöscht, selbst wenn noch ein Weak Pointer existiert. Dies ist nützlich, um Shared Objekte zu beobachten, ohne deren Freigabe zu verhindern.

cpp

main

copy
12345678910111213141516171819
#include <iostream> #include <memory> struct Resource { Resource() { std::cout << "Resource created\n"; } ~Resource() { std::cout << "Resource destroyed\n"; } }; int main() { std::shared_ptr<Resource> sp1 = std::make_shared<Resource>(); std::weak_ptr<Resource> wp = sp1; // Weak pointer does not increase ref count std::cout << "Shared pointer going out of scope...\n"; sp1.reset(); // Resource is deleted if (wp.expired()) std::cout << "Resource no longer exists\n"; }

Der Lebenszyklus eines Weak Pointers

Weak Pointers sind Beobachter, sie können auf ein Objekt zugreifen, aber verlängern dessen Lebensdauer nicht.

Ihr Lebenszyklus hängt von Shared Pointers ab. Wenn der letzte Shared Pointer zerstört wird, wird das Objekt freigegeben, und der Weak Pointer läuft ab. Er existiert weiterhin, wird aber leer.

question mark

Wenn 10 Shared Pointers und 1 Weak Pointer auf eine Ressource verweisen, was passiert, wenn alle Shared Pointers außer Reichweite gehen?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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