std::unique_ptr<T,Deleter>::release
Von cppreference.com
< cpp | memory | unique ptr
| pointer release() noexcept; |
(seit C++11) (constexpr seit C++23) |
|
Gibt den Besitz des verwalteten Objekts, falls vorhanden, frei.
get() gibt nach dem Aufruf nullptr zurück.
Der Aufrufer ist für die Bereinigung des Objekts verantwortlich (z. B. mithilfe von get_deleter()).
Inhalt |
[edit] Parameter
(keine)
[edit] Rückgabewert
Zeiger auf das verwaltete Objekt oder nullptr, wenn kein verwaltetes Objekt vorhanden war, d. h. der Wert, der von get() vor dem Aufruf zurückgegeben worden wäre.
[edit] Beispiel
Führen Sie diesen Code aus
#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); }
Ausgabe
Foo legacy_api ~Foo
[edit] Siehe auch
| Gibt einen Zeiger auf das verwaltete Objekt zurück (öffentliche Memberfunktion) | |
| Gibt den Deleter zurück, der zur Zerstörung des verwalteten Objekts verwendet wird (public member function) | |
| Ersetzt das verwaltete Objekt (public member function) |