Счетчик владельцев 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.