Сначала рассмотрим самостоятельное использование переменной этого типа, так называемую независимую ссылку. Пусть объявлены две переменные:
float x=5; float &s=x;
Переменная ссылочного типа s обязательно должна быть проинициализирована. После такого объявления идентификатор s определяет другое, альтернативное, имя ячейки, названной x,то есть s и x — синонимы, идентификаторы для обозначения одной и той же области оперативной памяти.Иногда говорят, что ссылочная переменная — это псевдоним переменной, к которой она обращается. Поэтому оператор сout<<endl <<x<<” “<<s; выведет два одинаковых числа 5. Изменим значение переменной x: x*=2; а выведем s: cout<<endl <<x<<” “<<s; Несмотря на то, что значение s явно в программе не изменялось, то есть не было записано s*=2, оно также изменится и будут выведены два одинаковых числа 10. Это произошло потому, что между этими переменными нет разницы, то есть s и x — имена одной и той же ячейки.
Наоборот, если изменим значение s — s+=100; а выведем x— cout<<endl <<x<<” “<<s; то убедимся, что x также изменилось, и выводится 110 110.
Если объявить и проинициализировать ещё одну “обычную” переменную float y=3; и записать s=y; то копируются не адреса, а, как и при обычном объявлении, значение одной ячейки (y) помещается в другую, которую можно использовать как с именем s, так и x. Аналогично, s++ не меняет адрес, а увеличивает на единицу значение переменной s или x.
Если объявляется несколько переменных ссылочного типа, то перед каждым идентификатором должен стоять символ “&”.
Замечания.
· Следует различать использование символа & для взятия адреса элемента. Это связано с указателями и рассматривается во втором семестре.
· Самостоятельное использование переменных ссылочного типа не имеет практического применения. Наоборот, независимые ссылки создают недоразумения и затрудняют отладку программы.