Mientras respondía this question me confundí un poco. Todos sabemos que esto funciona bien debido a la semántica de copia de C++:Objetos en el montón y referencias
int *some_obj = new int(42);
int a_copy = *some_obj;
delete some_obj;
printf("The answer is %d\n", a_copy);
Pero, ¿qué tal esto?
int *some_obj = new int(42);
int& a_ref = *some_obj;
delete some_obj;
printf("The answer is %d\n", a_ref);
¿Está accediendo a la memoria eliminada?
Probablemente me lo pidieron varias veces en varias formas, pero esto no es muy amigable para Google. Demonios, no podría hacer un título decente.
Ahora que leí una parte de la página de Wikipedia, lo explica muy claramente en el último párrafo de [esta sección] (http://en.wikipedia.org/wiki/Reference_ (C% 2B% 2B)) #Relationship_to_pointers). ¿Qué pasa con el retorno de referencias a los temporales (A es una clase aleatoria) 'A & func() {return A(); } '? – orlp
Eso tiene el mismo problema. Está devolviendo una referencia a un objeto que ya no existe cuando la persona que llama lo recibe. –
Muy bien, gracias por explicarme. – orlp