Зміст курсу
Розумні Вказівники C++
Розумні Вказівники C++
Вступ до Слабких Вказівників
Розумний вказівник std::weak_ptr
не володіє об'єктом, на який він вказує. Це, по суті, означає, що слабкий вказівник не збільшує лічильник посилань об'єкта.
std::weak_ptr
дозволяє доступ до об'єкта, керованого спільними вказівниками, без продовження його життєвого циклу. Якщо всі спільні вказівники виходять за межі області видимості, об'єкт видаляється, навіть якщо слабкий вказівник все ще існує. Це корисно для спостереження за спільними об'єктами без запобігання їх видаленню.
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"; }
Життєвий цикл слабкого вказівника
Слабкі вказівники є спостерігачами, вони можуть отримати доступ до об'єкта, але не продовжують його життя.
Їх життєвий цикл залежить від розділених вказівників. Коли останній розділений вказівник знищується, об'єкт звільняється, і слабкий вказівник стає недійсним. Він все ще існує, але стає порожнім.
Дякуємо за ваш відгук!