El std::unique_ptr es un tipo de smart pointer que se introdujo en C++11. Su propósito es asegurar que solo un puntero tenga la propiedad de un objeto en cualquier momento, garantizando la eliminación automática del objeto cuando el std::unique_ptr sale de su ámbito.
A continuación, se muestra un ejemplo básico de cómo se puede utilizar std::unique_ptr
:
#include <iostream>
#include <memory>
int main() {
std::unique_ptr<int> ptr(new int(10));
std::cout << *ptr << std::endl;
return 0;
}
En este ejemplo, std::unique_ptr
se utiliza para gestionar un puntero a un entero. Cuando el std::unique_ptr
sale de su ámbito, el objeto al que apunta se destruye automáticamente.
La propiedad del objeto gestionado por std::unique_ptr
puede transferirse a otro std::unique_ptr
usando la función std::move
. Aquí hay un ejemplo:
#include <iostream>
#include <memory>
void process(std::unique_ptr<int> ptr) {
std::cout << *ptr << std::endl;
}
int main() {
std::unique_ptr<int> ptr(new int(10));
process(std::move(ptr));
return 0;
}
En este ejemplo, la propiedad del puntero se transfiere a la función process
usando std::move
. Una vez transferida, el std::unique_ptr
original se establece en nullptr
.
std::unique_ptr está disponible desde la versión C++11. Para usarlo, se debe incluir el encabezado <memory>.
Jorge García
Fullstack developer