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

Класс unique_ptr

Класс unique_ptr - это умный указатель, который обеспечивает уникальное владение динамически выделенным объектом. Такой указатель не может быть скопирован, но может быть перемещён. Когда unique_ptr выходит из области видимости, он автоматически удаляет объект, которым владеет, освобождая память. В качестве параметра шаблона указывается тип объекта, которым будет управлять указатель. Вторым необязательным параметром можно задать пользовательский удалитель.

Синтаксис

#include <memory> std::unique_ptr<Type> ptr(new Type());

Пример

Давайте создадим unique_ptr для целого числа и выведем его значение:

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

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

42

Пример

Давайте создадим unique_ptr для строки и выведем её длину:

#include <iostream> #include <memory> #include <string> using namespace std; int main() { unique_ptr<string> ptr(new string("abcde")); cout << ptr->length() << endl; return 0; }

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

5

Пример

Давайте переместим владение объектом из одного unique_ptr в другой с помощью функции move:

#include <iostream> #include <memory> using namespace std; int main() { unique_ptr<int> ptr1(new int(123)); unique_ptr<int> ptr2 = move(ptr1); if (ptr1 == nullptr) { cout << "ptr1 is empty" << endl; } cout << *ptr2 << endl; return 0; }

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

"ptr1 is empty" 123

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

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