Программирование на C и C++

Онлайн справочник программиста на C и C++

Независимые ссылки

Хотя в первую очередь ссылки включены в С++ для поддержки передачи параметров по ссылке и возвращения результата функции по ссылке, можно объявлять переменные ссылочного типа и как самостоятельные переменные. В таком случае они называются независимыми ссылками (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;