std::unique_ptr::release
De cppreference.com
<tbody>
</tbody>
pointer release() noexcept; |
(desde C++11) (constexpr since C++23) |
|
Libera la posesión del objeto gestionado, si la hay.
get() devuelve nullptr después de la llamada.
El llamante es responsable de eliminar el objeto.
Parámetros
(Ninguno)
Valor de retorno
Puntero al objeto gestionado o nullptr si no hubiera ningún objeto gestionado, es decir, el valor que devolvería get() antes de la llamada.
Ejemplo
Ejecuta este código
#include <memory>
#include <iostream>
#include <cassert>
struct Foo {
Foo() { std::cout << "Foo\n"; }
~Foo() { std::cout << "~Foo\n"; }
};
int main()
{
std::cout << "Creando un nuevo objeto Foo...\n";
std::unique_ptr<Foo> up(new Foo());
std::cout << "A punto de liberar un objeto Foo...\n";
Foo* fp = up.release();
assert (up.get() == nullptr);
assert (up == nullptr);
std::cout << "Objeto Foo ya no se posee por unique_ptr...\n";
delete fp;
}
Salida:
Creando un nuevo objeto Foo...
Foo
A punto de liberar un objeto Foo...
Objeto Foo ya no se posee por unique_ptr...
~Foo
Véase también
| Devuelve un puntero al objeto gestionado. (función miembro pública) | |
| Reemplaza el objeto gestionado. (función miembro pública) |