Contenido del Curso
C++ Smart Pointers
C++ Smart Pointers
Introducción a los Punteros Débiles
El puntero inteligente std::weak_ptr
no posee el objeto al que apunta. Esto esencialmente significa que un puntero débil no incrementa el conteo de referencias del objeto.
Un std::weak_ptr
permite el acceso a un objeto gestionado por punteros compartidos sin extender su tiempo de vida. Si todos los punteros compartidos salen del ámbito, el objeto se elimina, incluso si todavía existe un puntero débil. Esto es útil para observar objetos compartidos sin impedir su desasignación.
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"; }
El Ciclo de Vida de un Puntero Débil
Los punteros débiles son observadores que pueden acceder a un objeto pero no extienden su vida útil.
Su ciclo de vida depende de los punteros compartidos. Cuando el último puntero compartido es destruido, el objeto es desasignado, y el puntero débil expira. Todavía existe pero se vuelve vacío.
¡Gracias por tus comentarios!