Estos son dos declaraciones funcionalmente equivalentes:
int& a; // & associated with type
int &a; // & associated with variable
asociar el &
o *
con el nombre del tipo refleja el deseo del programador para tener un tipo de puntero separada. Sin embargo, la dificultad de asociar el &
o *
con el nombre del tipo en lugar de la variable es que, de acuerdo con la sintaxis formal C++
, ni el &
ni el *
es distributivo en una lista de variables. Por lo tanto, creando fácilmente declaraciones engañosas. Por ejemplo, la siguiente declaración crea una, no dos, referencias enteras.
int& a, b;
Aquí, b
se declara como un número entero (no es una referencia entero) porque, cuando se utiliza en una declaración, la &
(o *
) está unido a la variable individual que antecede, no al tipo que sigue. El problema con esta declaración es que, visualmente, tanto a como b parecen ser de tipos de referencia, aunque solo a
es una referencia, por lo que la confusión visual no solo engaña a los programadores novatos C++
, sino también a los programadores ocasionalmente experimentados.
No importa si escribe int &a
o int& a
para un compilador C++
. Sin embargo, para evitar confusiones, &
y *
deberían asociarse con variables en lugar de escribir.
no, no hace ninguna diferencia. – Nerdtron