C++: Semántica de movimiento

Qué es la semántica de movimiento

¡Prueba gratis durante 10 días

nuestros 1246 cursos !

Prueba gratis Mostrar modalidades de suscripción
La semántica de movimiento, que llegó con el estándar C++11, nos permite crear código con un rendimiento superior y una mejor gestión de la memoria frente a lo que obtendríamos si nos limitásemos a copiar los datos.
02:31

Transcripción

La semántica de movimiento representa una incorporación importante y muy valiosa al lenguaje C++. La semántica de movimiento se añadió al lenguage con el estándar C++11. Para explicar la necesidad de la semántica de movimiento, vamos a analizar este sencillo ejemplo sin semántica de movimiento. Aquí tenemos una función que toma un objeto de tipo "T" y devuelve un objeto del mismo tipo "T". Esta función utiliza "call by value", lo que significa que cuando se llama a esta función se tiene que construir un objeto para que lo utilice la función. Como la función también devuelve por valor, se construye otro objeto nuevo para el valor del retorno. En este punto, se han construido dos nuevos objetos. Uno de ellos es un objeto temporal que solo se utiliza mientras la función está operativa. Cuando se crea el nuevo objeto del valor del retorno, se llama al constructor de copia para copiar los contenidos de los objetos temporales al nuevo objeto "b". Después de que la función haya terminado, el objeto temporal que se usa en la función queda fuera de ámbito y se destruye. Vamos a ver qué hace un constructor de copia. Primero tiene que inicializar el objeto y después copiar la información relevante del antiguo objeto al nuevo objeto. Dependiendo de la clase, puede que sea un contenedor con muchos datos. Esto puede suponer una cantidad importante de tiempo y de uso de memoria. Con la semántica de movimiento se puede mitigar gran parte de ese trabajo simplemente moviendo los datos en vez de copiarlos. Mover los datos solo implica reasociar los datos con el nuevo objeto, no se hace ninguna copia. Esto se realiza con algo denominado "Referencia rvalue". Un tipo de referencia tradicional de C++ que ahora se llama "Referencia lvalue", para poder distinguirla del nuevo tipo "rvalue". Una "Referencia rvalue" funciona de forma muy similar a una "Referencia lvalue" con una diferencia importante. Una "Referencia rvalue" se puede mover, una "Referencia lvalue" no. La semántica de movimiento ofrece varias opciones importantes, para ganar tanto en eficacia como en uso de memoria. Vamos a ver cómo funciona esta potente y nueva funcionalidad del lenguaje.

C++: Semántica de movimiento

Profundiza en C++ con la semántica de movimiento, lo que permite optimizar la transferencia de datos, un componente fundamental de la gestión de recursos en C++.

28 min (8 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:13/12/2016

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.