Ссылки
Когда переменная описана как T, что есть "ссылка на тип T", она может быть инициализирована или указателем на тип T, или объектом типа T. В последнем случае будет неявно применена операция взятия адреса . Например:
int i; int r1 = i; int r2 = i;
И r1 и r2 будут указывать на i.
Обработка инициализации ссылки очень сильно зависит от того, что ей присваивается. Как описывалось в , ссылка неявно переадресуется при ее использовании. Например
r1 = r2;
означает копирование целого, на которое указывает r2, в целое, на которое указывает r1.
Ссылка должна быть инициализирована. Таким образом, ссылку можно считать именем объекта.
Чтобы получить указатель pp, обозначающий тот объект, что и ссылка rr, можно написать pp=rr. Это будет проинтерпретировано как pp=*rr.
Если инициализатор для ссылки на тип T не является адресным выражением, то будет создан и инициализирован с помощью правил инициализации объект типа T. Тогда значением ссылки станет адрес объекта. Время жизни объекта, созданного таким способом, будет в той области видимости, в которой он создан. Например:
double rr = 1;
допустимо, и rr будет указывать на объект типа double, в котором хранится значение 1.0.
Ссылки особенно полезны в качестве типов параметров.