What are the differences between a pointer variable and a reference variable in C++
Sé que las referencias son azúcar sintáctica, por lo que el código es más fácil de leer y escribir.
¿Pero cuáles son las diferencias?
Resumen de las respuestas y enlaces a continuación:
Un puntero se puede reasignar cualquier número de veces, mientras que una referencia no se puede reasignar después del enlace. Los punteros no pueden apuntar a ninguna parteNULL
), mientras que una referencia siempre se refiere a un objeto. No puede tomar la dirección de una referencia como puede hacerlo con punteros. No hay "aritmética de referencia" (pero puede tomar la dirección de un objeto señalado por una referencia y hacer una aritmética de puntero como en&obj + 5
).Para aclarar una idea errónea:
El estándar C ++ es muy cuidadoso para evitar dictar cómo un compilador puede implementar referencias, pero cada compilador de C ++ implementa referencias como punteros. Es decir, una declaración como:
int &ri = i;
si no está optimizado por completo, asigna la misma cantidad de almacenamiento que un puntero y coloca la dirección dei
en ese almacenamiento.
Así, un puntero y una referencia usan la misma cantidad de memoria.
Como regla general
Utilice referencias en parámetros de función y tipos de retorno para proporcionar interfaces útiles y autodocumentadas.Utilice punteros para implementar algoritmos y estructuras de datos.LecturA INTERESANTE
Mi favorito de todos los tiempos C ++ Preguntas frecuentes lite.Referencias vs. Punteros. Una introducción a las referencias.Referencias y const.