std::unique_ptr::release
From cppreference.com
< cpp | memory | unique ptr
pointer release(); |
(since C++11) | |
Releases the ownership of the managed object if any. get() returns nullptr after the call.
Contents |
[edit] Parameters
(none)
[edit] Return value
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.
[edit] Exceptions
noexcept specification:
noexcept
[edit] Example
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; }
Output:
Creating new Foo... Foo About to release Foo... Foo is no longer owned by unique_ptr... ~Foo
[edit] See also
returns a pointer to the managed object (public member function) | |
replaces the managed object (public member function) |