Siento que esta pregunta es lo suficientemente básica como para estar por ahí en alguna parte, pero parece que no puedo encontrar una respuesta para ella.Declarando una referencia al objeto y al operador de asignación
Supongamos que tengo este código:
//class member function
std::map< std::string, std::string > myMap;
const std::map< std::string, std::string >& bar()
{
return myMap;
}
void myFunc(std::map< std::string, std::string >& foo1)
{
foo1 = bar();
std::map< std::string, std::string >& foo2 = bar();
}
Mi opinión es que si empiezo a usar foo2, ya foo2 es una referencia a la misma instancia que lo bar() regresa, cualquier cosa que hago con foo2 será reflejado en myMap. ¿Pero qué hay de foo1? ¿Foo1 obtiene una copia de myMap o también apunta a la misma instancia que devuelve bar()? La biblioteca estándar de C++ dice que el operador de asignación para std :: map copiará los elementos, pero ¿significa eso que el operador de asignación realmente no se invoca en la declaración de foo2?
Gracias!
+1 Gracias, aprendí algo nuevo por mi cuenta. Acabo de hacer una prueba y estaba 100% INCORRECTO y tienes razón = -) – flumpb
Ok, genial! Gracias, lo que realmente necesitaba saber es que el operador de asignación se invoca en foo1 y no se invoca en foo2. Gran explicación, gracias! – bhh1988
@Luc Si es posible, ¿puede repasar por qué las variables de referencia generalmente no se usan?Tengo una mejor comprensión de lo que son (gracias a su respuesta) pero parece que los codificadores en general están a favor de los indicadores al respecto. ¿Es la redundancia? El alcance limitado? –