Хотя в первую очередь ссылки включены в С++ для поддержки передачи параметров по ссылке и возвращения результата функции по ссылке, можно объявлять переменные ссылочного типа и как самостоятельные переменные. В таком случае они называются независимыми ссылками (independent references). Однако использование независимых переменных ссылочного типа редко может считаться удачным решением, поскольку они имеют тенденцию создавать недоразумения и могут служит причиной фатальных ошибок. Имея это в виду, тем не менее кратко обсудим независимые переменные ссылочного типа.
Поскольку переменные ссылочного типа должны указывать на какой-либо объект, то независимые переменные ссылочного типа должны быть инициализированы при своем объявлении. В общем случае это означает присвоение им адреса уже объявленного объекта. После этого переменная ссылочного типа может использоваться всюду, где используется переменная, на которую она ссылается. Фактически между обеими переменными нет разницы. В качестве примера рассмотрим программу:
#include <iostream.h>
int main()
{
int j, k;
int &i = j; // независимая ссылка на j
j = 10;
cout << j << " " << i; // выводит 10 10
k = 121;
i = k; // копирование значения, а не адреса k в j
cout << "\n" << j; // выводит 121
return 0;
}
Программа выдаст следующие данные:
10 10
121
Адрес, на который указывает ссылочная переменная i, фиксирован и не может меняться. Так при выполнении присвоения i = к величина к копируется в j.
Вот другой пример. Инструкция i++ не вызывает изменения адреса. Вместо этого значение переменной к увеличивается на 1. (Надо помнить, что ссылки не являются указателями.) Ссылочные переменные могут указывать на константы:
int &i = 100;