Справочное руководство по C++



         

Ссылки


Когда переменная описана как T&, что есть "ссылка на тип T", она может быть инициализирована или указателем на тип T, или объектом типа T. В последнем случае будет неявно применена операция взятия адреса &. Например:

int i; int& r1 = i; int& r2 = &i;

И r1 и r2 будут указывать на i.

Обработка инициализации ссылки очень сильно зависит от того, что ей присваивается. Как описывалось в , ссылка неявно переадресуется при ее использовании. Например

r1 = r2;

означает копирование целого, на которое указывает r2, в целое, на которое указывает r1.

Ссылка должна быть инициализирована. Таким образом, ссылку можно считать именем объекта.

Чтобы получить указатель pp, обозначающий тот объект, что и ссылка rr, можно написать pp=&rr. Это будет проинтерпретировано как pp=&*rr.

Если инициализатор для ссылки на тип T не является адресным выражением, то будет создан и инициализирован с помощью правил инициализации объект типа T. Тогда значением ссылки станет адрес объекта. Время жизни объекта, созданного таким способом, будет в той области видимости, в которой он создан. Например:

double& rr = 1;

допустимо, и rr будет указывать на объект типа double, в котором хранится значение 1.0.

Ссылки особенно полезны в качестве типов параметров.




Содержание  Назад  Вперед