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
См. также
| возвращает указатель на управляемый объект (публичный член-функция) |
|
| возвращает удалитель, используемый для уничтожения управляемого объекта (публичный член-функция) |
|
| заменяет управляемый объект (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/unique_ptr/release