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