Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpSpUC 135 of 150 menu
◀ ▶

Счетчик владельцев shared_ptr в C++

У shared_ptr есть счетчик, сколько указателей сейчас делят один объект.

Метод use_count возвращает это число. Пока счетчик больше нуля, объект в куче жив. Копия увеличивает значение, уничтожение переменной - уменьшает. Запишем класс Node:

#include <iostream> #include <memory> class Node { public: int tag; Node(int tag) : tag(tag) {} };

Создадим три shared_ptr на один объект и выведем счетчик после каждой копии:

int main() { std::shared_ptr<Node> a = std::make_shared<Node>(1); std::cout << a.use_count() << "\n"; std::shared_ptr<Node> b = a; std::cout << a.use_count() << "\n"; std::shared_ptr<Node> c = b; std::cout << c.use_count() << "\n"; return 0; }

Создайте shared_ptr на класс Slot, сделайте две копии и выведите метод use_count после каждого шага - ожидайте 1, затем 2, затем 3.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить