Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Creación y Compartición de Shared Pointers | Punteros Compartidos
C++ Smart Pointers
course content

Contenido del Curso

C++ Smart Pointers

C++ Smart Pointers

1. Introducción a los Punteros Inteligentes
2. Punteros Únicos
3. Punteros Compartidos
4. Punteros Débiles
5. Temas Avanzados

book
Creación y Compartición de Shared Pointers

El Enfoque Recomendado

La forma recomendada de crear un puntero compartido es a través de la función std::make_shared. Este enfoque es generalmente más eficiente y expresivo en comparación con el uso de new. Asigna memoria para el objeto y el bloque de control (conteo de referencias) en un solo paso. Por ejemplo:

h

make_shared

copy
12
// Create a shared pointer to an integer std::shared_ptr<int> p_int = std::make_shared<int>(42);

La línea anterior asigna un entero dinámico y también inicializa un puntero compartido a él con un conteo de referencias de uno.

El Enfoque Desalentado

También puedes crear punteros compartidos usando new, pero este método es desalentado porque no es ni expresivo ni eficiente. La sintaxis para este enfoque requiere que pases el objeto al constructor del puntero compartido.

h

creating_shared_pointer

copy
12
// Also creates a shared pointer to an integer std::shared_ptr<int> p_int(new int(42));

Asignando un entero dinámico y luego pasándolo al constructor del puntero compartido. Sin embargo, el bloque de control (conteo de referencias) se inicializará dentro del constructor.

Esto significa que estamos haciendo dos inicializaciones separadas, lo cual es ineficiente y se podría generar un error.

Pasando Shared Pointers

Los shared pointers están diseñados para compartir de manera segura. Vamos a explorar algunas formas en las que podemos pasarlos.

question mark

Si cuatro instancias de shared_ptr comparten la propiedad del mismo objeto dinámico, ¿cuándo se llamará al destructor del objeto?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2
Lamentamos que algo salió mal. ¿Qué pasó?
some-alt