• Miércoles 20 de Noviembre de 2024, 08:27

Autor Tema:  referencias c++  (Leído 1619 veces)

cabeto14

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
referencias c++
« en: Jueves 27 de Enero de 2011, 18:12 »
0
hola.. una simple duda

Código: C++
  1.  
  2. int& a=x;
  3.  
  4.  

esto quiere decir que "a" va a tener la misma direccion de memoria que "x". puedo interpretarlo asi? se que referencia es un "alias" pero como puedo interpretarlo de manera "mas a fondo", asi?.

gracias.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: referencias c++
« Respuesta #1 en: Jueves 27 de Enero de 2011, 20:11 »
0
Es mejor decir simplemente "a es otro nombre para x".

Los detalles internos de implementación dependen del compilador que generalmente lo implementa como si hubieras usado punteros, pero es libre de implementarlo de otras formas.

cabeto14

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
Re: referencias c++
« Respuesta #2 en: Viernes 28 de Enero de 2011, 19:10 »
0
osea que hacer esto

Código: C++
  1.  
  2. int &a=x;
  3.  
  4.  

el compilador lo interpreta como si estubiera haciendo:
Código: C++
  1.  
  2. int *a=&x;
  3.  
  4.  

osea que es lo mismo? entonces si almacena direccion de memoria? osea como interpreta (el primer codigo) el compilador?

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: referencias c++
« Respuesta #3 en: Viernes 28 de Enero de 2011, 23:18 »
0
No siempre, además que de no está garantizado que se "almacene" la dirección de memoria. Todo ello está a discreción del compilador.

Por ejemplo, para casos muy simples como este:
Código: C++
  1.  
  2. int a = 0;
  3. int& b = a;
  4. b++;
  5. printf("%i", b);
  6.  
  7.  

Un buen compilador puede determinar que el anterior código es equivalente a:
Código: C++
  1.  
  2. int a = 0;
  3. a++;
  4. printf("%i", a);
  5.  
  6.  

que es más eficiente que:
Código: C++
  1.  
  2. int a = 0;
  3. int* b = &a;
  4. (*b)++;
  5. printf("%i", *b);
  6.  
  7.  

cabeto14

  • Nuevo Miembro
  • *
  • Mensajes: 17
  • Nacionalidad: co
    • Ver Perfil
Re: referencias c++
« Respuesta #4 en: Jueves 3 de Febrero de 2011, 05:34 »
0
ah ok Amilius gracias  :D .. de paso

encontre esto en esta pagina http://www.zator.com/Cpp/E4_2_3.htm
Citar
Las referencias son un tipo de dato C++ estrechamente relacionado con los punteros. Una referencia de un objeto no es un objeto [5], en el sentido que no tiene su propio espacio de almacenamiento como ocurre con los punteros, y en consecuencia no pueden realizarse con ellas muchas de las operaciones que se relacionan con objetos. Por ejemplo obtener su dirección, crearlas con el operador new, o crear matrices de referencias.
entonces, en definitiva las referencias no almacenan direcciones de memoria, ni son un objeto en si.. son simplemente "alias" mas nada..