std::unique_ptr::release

来自cppreference.com
< cpp‎ | memory‎ | unique ptr

 
 
 
 
 
pointer release();
(C++11 起)
发布的管理对象(如有)的所有权。 get()回报nullptr调用后.
原文:
Releases the ownership of the managed object if any. get() returns nullptr after the call.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 参数

(无)
原文:
(none)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 返回值

如果没有管理对象的指针被管理对象或nullptr,即在调用之前的值,该值将返回get().
原文:
Pointer to the managed object or nullptr if there was no managed object, i.e. the value which would be returned by get() before the call.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 例外

noexcept规定:  
noexcept
  (C++11 起)

[编辑] 示例

#include <memory>
#include <iostream>
 
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();
 
    if (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

[编辑] 另请参阅

返回指向被管理对象的指针
(公开成员函数) [编辑]
替换所管理的对象
(公开成员函数) [编辑]