std::unique_ptr<T,Deleter>::release
提供: cppreference.com
<tbody>
</tbody>
pointer release() noexcept; |
(C++11以上) | |
もしあれば、管理対象オブジェクトの所有権を解放します。 呼び出しの後、 get() は nullptr を返します。
引数
(なし)
戻り値
管理対象オブジェクトを指すポインタ、または管理対象オブジェクトがなかったならば nullptr。 つまり、この関数を呼ぶ前であれば get() によって返されたであろう値を返します。
例
Run this code
#include <memory>
#include <iostream>
#include <cassert>
struct Foo {
Foo() { std::cout << "Foo\n"; }
~Foo() { std::cout << "~Foo\n"; }
};
int main()
{
std::cout << "Creating new Foo...\n";
std::unique_ptr<Foo> up(new Foo());
std::cout << "About to release Foo...\n";
Foo* fp = up.release();
assert (up.get() == nullptr);
std::cout << "Foo is no longer owned by unique_ptr...\n";
delete fp;
}
出力:
Creating new Foo...
Foo
About to release Foo...
Foo is no longer owned by unique_ptr...
~Foo
関連項目
| 管理対象オブジェクトへのポインタを返します (パブリックメンバ関数) | |
| 管理対象オブジェクトを置き換えます (パブリックメンバ関数) |