Kursinhalt
C++ Smart Pointers
C++ Smart Pointers
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.
main
#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.
Danke für Ihr Feedback!