Spec-Zone.ru › C++

std::unique_ptr<T,Deleter>::release

pointer release() noexcept;
(с C++11)
(constexpr с C++23)

Освобождает владение управляемым объектом, если таковой имеется.

get() возвращает nullptr после вызова.

Вызывающая сторона отвечает за очистку объекта (например, с помощью get_deleter()).

Параметры

(нет)

Возвращаемое значение

Указатель на управляемый объект или nullptr, если управляемого объекта не было, т.е. значение, которое бы вернуло get() до вызова.

Пример

#include <cassert>
#include <iostream>
#include <memory>
 
struct Foo
{
    Foo() { std::cout << "Foo\n"; }
    ~Foo() { std::cout << "~Foo\n"; }
};
 
// Ownership of the Foo resource is transferred when calling this function
void legacy_api(Foo* owning_foo)
{
    std::cout << __func__ << '\n';
    // [legacy code that no one understands or dares touch anymore]
    // [...]
    delete owning_foo;
}
 
int main()
{
    std::unique_ptr<Foo> managed_foo(new Foo);
    // [code that might return or throw or some such]
    // [...]
    legacy_api(managed_foo.release());
 
    assert(managed_foo == nullptr);
}

Вывод:

Foo
legacy_api
~Foo

См. также

get
возвращает указатель на управляемый объект
(публичный член-функция)
get_deleter
возвращает удалитель, используемый для уничтожения управляемого объекта
(публичный член-функция)
reset
заменяет управляемый объект
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/unique_ptr/release

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API