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

Метод reset

Метод reset класса unique_ptr заменяет объект, которым владеет умный указатель. Он принимает один необязательный параметр - новый указатель, который становится управляемым. Если параметр не передан, unique_ptr освобождает текущий объект и становится пустым. Если параметр передан, старый объект удаляется, а владение передается новому указателю.

Синтаксис

ptr.reset([new_ptr]);

Пример

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

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

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

5 10

Пример

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

#include <iostream> #include <memory> using namespace std; int main() { unique_ptr<int> ptr(new int(42)); cout << *ptr << endl; ptr.reset(); if (ptr == nullptr) { cout << "ptr is null" << endl; } return 0; }

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

42 "ptr is null"

Пример

Давайте передадим владение от одного unique_ptr другому с помощью метода reset и release:

#include <iostream> #include <memory> using namespace std; int main() { unique_ptr<int> ptr1(new int(7)); unique_ptr<int> ptr2; ptr2.reset(ptr1.release()); cout << *ptr2 << endl; cout << (ptr1 == nullptr) << endl; return 0; }

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

7 1

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

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