single
Moviendo Punteros Únicos
Desliza para mostrar el menú
Copia No Permitida
Un std::unique_ptr es un puntero inteligente que gestiona un objeto asignado dinámicamente y asegura su eliminación adecuada cuando sale del ámbito. Tiene propiedad exclusiva del objeto que gestiona, lo que significa que no hay dos std::unique_ptr que puedan poseer el mismo objeto simultáneamente.
main.cpp
123456789#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }
Moviendo un Puntero Único
Aunque la copia no está permitida, puedes transferir la propiedad del objeto usando std::move. Esto mueve el recurso de un std::unique_ptr a otro, dejando el puntero original vacío.
main.cpp
123456789101112131415#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }
Cuando usas std::move, la propiedad del objeto se transfiere de un puntero único a otro. Después de esto, el puntero original ya no posee el objeto, y el nuevo puntero se convierte en su propietario.
Desliza para comenzar a programar
Completa el siguiente código de manera que la propiedad del entero asignado dinámicamente (con valor 42) se transfiera de manera segura de ptr1 a ptr2.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla