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*/
- Ivan Cachicatari asked 7 años ago
- last edited 7 años ago
- You must login to post comments