std::unique_ptr<T,Deleter>::release
来自cppreference.com
< cpp | memory | unique ptr
pointer release() noexcept; |
(C++11 起) | |
若存在,则释放被管理对象的所有权。调用后 get() 返回 nullptr 。
调用方负责删除该对象。
参数
(无)
返回值
指向被管理对象的指针,或若无被管理对象则为 nullptr ,即调用前 get() 会返回的值。
示例
运行此代码
#include <cassert> #include <iostream> #include <memory> struct Foo { Foo() { std::cout << "Foo\n"; } ~Foo() { std::cout << "~Foo\n"; } }; // Foo资源的所有权在调用该函数时被转移 void legacy_api(Foo* owning_foo) { std::cout << __func__ << '\n'; // 没有人能理解或再敢碰的遗留代码 // ... delete owning_foo; } int main() { std::unique_ptr<Foo> managed_foo(new Foo); legacy_api(managed_foo.release()); assert(managed_foo == nullptr); }
输出:
Foo legacy_api ~Foo
参阅
返回指向被管理对象的指针 (公开成员函数) | |
替换被管理对象 (公开成员函数) |