Метод use_count
Метод use_count возвращает текущее
количество объектов shared_ptr, которые
совместно владеют одним и тем же ресурсом.
Другими словами, он показывает, сколько
«владельцев» ссылается на один и тот же
указатель. Метод не принимает параметров и
возвращает целое число типа long.
Когда счетчик владельцев становится равным
нулю, управляемый объект автоматически
удаляется. Для пустого указателя метод
возвращает 0.
Синтаксис
ptr.use_count()
Пример
Давайте создадим один shared_ptr и
посмотрим, чему равен счетчик владельцев:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
shared_ptr<int> ptr = make_shared<int>(5);
cout << ptr.use_count() << endl;
return 0;
}
Результат выполнения кода:
1
Пример
Давайте скопируем указатель и посмотрим, как изменится счетчик владельцев:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
shared_ptr<int> ptr1 = make_shared<int>(5);
shared_ptr<int> ptr2 = ptr1;
cout << ptr1.use_count() << endl;
cout << ptr2.use_count() << endl;
return 0;
}
Результат выполнения кода:
2
2
Пример
Давайте сбросим один из указателей и посмотрим, как изменится счетчик:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
shared_ptr<int> ptr1 = make_shared<int>(5);
shared_ptr<int> ptr2 = ptr1;
ptr2.reset();
cout << ptr1.use_count() << endl;
cout << ptr2.use_count() << endl;
return 0;
}
Результат выполнения кода:
1
0
Смотрите также
-
класс
shared_ptr,
который представляет умный указатель с общим владением -
метод
get,
который возвращает хранимый указатель -
метод
reset,
который заменяет управляемый объект -
метод
unique,
который проверяет, является ли владелец единственным