Conteúdo do Curso
C++ Smart Pointers
C++ Smart Pointers
Introdução a Ponteiros Fracos
O ponteiro inteligente std::weak_ptr
não possui o objeto para o qual aponta. Isso essencialmente significa que um ponteiro fraco não aumenta a contagem de referência do objeto.
Um std::weak_ptr
permite o acesso a um objeto gerenciado por ponteiros compartilhados sem estender sua vida útil. Se todos os ponteiros compartilhados saírem do escopo, o objeto é deletado, mesmo que ainda exista um ponteiro fraco. Isso é útil para observar objetos compartilhados sem impedir sua desalocação.
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"; }
O Ciclo de Vida de um Weak Pointer
Weak pointers são observadores, eles podem acessar um objeto, mas não estendem seu tempo de vida.
Seu ciclo de vida depende de shared pointers. Quando o último shared pointer é destruído, o objeto é desalocado e o weak pointer expira. Ele ainda existe, mas se torna vazio.
Obrigado pelo seu feedback!