¿Que es una refencia?

0
0

Es un alias (un nombre alternativo) de un objeto.

Referencias son usadas frecuentemente para realizar pase por referencia:

void swap(int& i, int& j)
{
   int tmp = i;
   i = j;
   j = tmp;
}
 
int main()
{
   int x, y;
   ...
   swap(x,y);
   ...
}

Donde i y j son los alias de x e y respectivamente los cuales están en la función main. En otras palabras, i es x, no un puntero a x, ni una copia de x, pero sí x en sí misma. Cualquier cosa que hagamos con i también le hacemos a x, y viceversa.

Ok. Así es como debe pensar un programador sobre las referencias. Ahora, con el riesgo confundirle dándole una perspectiva diferente, así es como referencias se implementan. Detrás de todo, una referencia i al objeto x suele ser la dirección de memoria del objeto x. Pero cuando un programador utiliza: i++, el compilador genera código que incrementa el valor de x. En particular, la dirección que el compilador utiliza para hallar x no cambia. Un programador de C va a pensar en esto como un paso de variables mediante punteros, con la variante sintáctica (1) de mover el & desde la variable origen a la variable de destino, y (2) la eliminación de los *s. En otras palabras, un programador de C pensará que i es una macro para acceder a (*p), donde p es un puntero a x (por ejemplo, el compilador automáticamente des-referencia el puntero subyacente: i++ cambia a (*p)++; i = 7 se cambia automáticamente a p* = 7).

Nota importante: A pesar de que una referencia a menudo se implementa utilizando una dirección en el lenguaje ensamblador, por favor, no pensar alegremente en una referencia como si fuera un puntero a un objeto. Una referencia es el objeto. No es un puntero al objeto, ni una copia del objeto. Es el objeto.

 

/*Tomado de C++ FAQ Lite*/

  • You must to post comments
Showing 0 results
Your Answer

Please first to submit.