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