std::unique_ptr<T,Deleter>::release
来自 cppreference.com
< cpp | memory | unique ptr
pointer release() noexcept; |
(自 C++11 起) (自 C++23 起为 constexpr) |
|
释放对管理对象的拥有权,如果有的话。
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
[编辑] 另请参阅
返回指向管理对象的指针 (公共成员函数) | |
返回用于销毁管理对象的删除器 (公共成员函数) | |
替换管理对象 (公共成员函数) |