Язык программирования C++


Ссылки

Ссылка – это еще одно имя переменной. Если имеется какая-либо переменная, например

Complex x;

то можно определить ссылку на переменную x как

Complex y = x;

и тогда x и y обозначают одну и ту же величину. Если выполнены операторы

x.real = 1; x.imaginary = 2;

то y.real равно 1 и y.imaginary равно 2. Фактически, ссылка – это адрес переменной (поэтому при определении ссылки используется символ -- знак операции взятия адреса), и в этом смысле она сходна с указателем, однако у ссылок есть свои особенности.

Во-первых, определяя переменную типа ссылки, ее необходимо инициализировать, указав, на какую переменную она ссылается. Нельзя определить ссылку

int xref;

можно только

int xref = x;

Во-вторых, нельзя переопределить ссылку, т.е. изменить на какой объект она ссылается. Если после определения ссылки xref мы выполним присваивание

xref = y;

то выполнится присваивание значения переменной y той переменной, на которую ссылается xref. Ссылка   xref по-прежнему будет ссылаться на x. В результате выполнения следующего фрагмента программы:

int x = 10; int y = 20; int xref = x; xref = y; x += 2; cout "x = " x endl; cout "y = " y endl; cout "xref = " xref endl;

будет выведено:

x = 22 y = 20 xref = 22

В-третьих, синтаксически обращение к ссылке аналогично обращению к переменной. Если для обращения к атрибуту объекта, на который ссылается указатель, применяется операция -, то для подобной же операции со ссылкой применяется точка ".".

Complex a; Complex* aptr = a; Complex aref = a; aptr-real = 1; aref.imaginary = 2;

Как и указатель, ссылка сама по себе не имеет значения.Ссылка должна на что-то ссылаться, тогда как указатель должен на что-то указывать.



Содержание раздела