В большинстве компиляторов ссылки реализуются с использованием указателей , и, следовательно, имеют те же точные затраты, что и те, которые подразумевались бы, если бы вы использовали указатель вместо ссылки.
Обратите внимание, что стандарт не заставляет реализацию ссылок полагаться на указатели.В частности,
It is unspecified whether or not a reference requires storage (3.7).
Ссылки позволяют передавать аргументы «по ссылке», а не «передаются копией».
void f(int & r) { r = 1; }
void g(int const * p) { *p = 2; }
void h(int j) { j = 3; }
int main()
{
int i = 0;
f(i); // i now equals 1
g(&i); // i now equals 2 (the address of i was given to g)
h(i); // i is copied and thus not modified (ie i == 2 after this line)
}
См. Также C ++ faqlite: ссылки .