Язык программирования 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;

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




Начало  Назад  Вперед



Книжный магазин