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