Luego de consultar con especialistas en el tema, programadores de diversas ramas y profesores hemos dado con la respuesta al problema y la compartimos en esta publicación.
Solución:
Un objeto se identifica por su dirección. Si lo quiere en otra dirección, debe construir una nueva; no puedes mover objetos. (Incluso con C++ 11, la nueva semántica de “mover” en realidad no mueve un objeto; proporciona una forma optimizada de mover su valor, si sabe que no necesitará el valor desde donde lo está moviendo .)
En primer lugar, debe preferir la pila al montón en la mayoría de los casos.
En segundo lugar, cuando asigna objetos en el montón, debe envolver el puntero sin procesar en algún objeto administrado que esté en la pila. Si no es por nada más, hágalo por seguridad excepcional.
En tercer lugar, los objetos Qt suelen hacer exactamente eso, es decir, no hay ninguna ventaja en escribir new QImage
o new QMap
etc.
Sin embargo, la forma correcta de mover un objeto que no es de montón al montón es decir
new ObjectType (old_instance)
Si hace esto con un objeto temporal, como
new ObjectType (create_object ())
entonces probablemente eliminará la copia adicional (enlace roto para mí, en caché)
Valoraciones y comentarios
Agradecemos que quieras añadir valor a nuestro contenido informacional asistiendo con tu experiencia en las interpretaciones.