Ссылки и указатели НЕ одинаковы в C ++ - хотя вы, вероятно, читали, что большинство компиляторов реализуют ссылки с использованием указателей на уровне машинного кода.Вам не нужно заботиться о том, как они реализованы компилятором - но какова семантика «ссылки» и «указателя» в C ++.
int i = 5;
int &j = i; // j refers to the variable i
// wherever the code uses j, it actually uses i
j++; // I just changed i from 5 to 6
int *pj = &i; // pj is a pointer to i
(*pj)--; // I just changed i back to 5
Обратите внимание, что я могу изменить pj на точкуна другое целое число, но я не могу изменить ссылку j для ссылки на другое целое число.
int k = 10;
pj = &k; // pj now actually points to k
(*pj)++; // I just changed k to 11
j = k; // no, this doesn't change the reference j to refer to k instead of i,
// but this statement just assigned k to i, that is, i now equals 11!