РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
636 of 815 menu

Метод get

Метод get класса unique_ptr возвращает обычный указатель на объект, которым владеет умный указатель. При этом владение не передается: unique_ptr продолжает отвечать за удаление объекта, а полученный указатель можно использовать только для наблюдения или передачи в функции, которые не забирают владение. Метод не принимает параметров и возвращает указатель типа T*.

Синтаксис

ptr.get()

Пример

Давайте создадим unique_ptr и получим из него сырой указатель с помощью метода get:

#include <iostream> #include <memory> using namespace std; int main() { unique_ptr<int> ptr = make_unique<int>(42); int* raw = ptr.get(); cout << *raw << endl; return 0; }

Результат выполнения кода:

42

Пример

Давайте проверим, что метод get не передает владение: после вызова get умный указатель все еще содержит объект:

#include <iostream> #include <memory> using namespace std; int main() { unique_ptr<int> ptr = make_unique<int>(42); int* raw = ptr.get(); cout << (ptr ? "owned" : "empty") << endl; cout << *raw << endl; return 0; }

Результат выполнения кода:

"owned" 42

Пример

Давайте проверим, что у пустого unique_ptr метод get возвращает нулевой указатель:

#include <iostream> #include <memory> using namespace std; int main() { unique_ptr<int> ptr; int* raw = ptr.get(); cout << (raw == nullptr ? "null" : "not null") << endl; return 0; }

Результат выполнения кода:

"null"

Смотрите также

  • класс unique_ptr,
    который представляет умный указатель с уникальным владением
  • метод release,
    который освобождает владение и возвращает указатель
  • метод reset,
    который заменяет управляемый объект
  • функция make_unique,
    которая создает объект и возвращает unique_ptr
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить