Ссылка на объект
Ссылка
на
объект
–
это ещё одно имя объекта. Если, например,
объявлен объект ob
класса Samp:
Samp
ob; то
можно определить ссылку
на объект как
Samp
& ref
= ob;
и тогда ob
и ref
обозначают один и тот же объект. Это
означает, что если, например, открытой
переменной z
объекта
ob
присвоить значение 5,
выполнив оператор ob.z
= 5; то и ref.z
будет равно
5.
Фактически, ссылка
– это адрес объекта
(поэтому при определении ссылки
используется символ &
– знак операции
адреса), и в
этом смысле она сходна с указателем на
объект, однако у ссылок есть свои
особенности.
Во-первых,
определяя переменную типа ссылки, её
необходимо инициализировать, указав
на какой объект она ссылается. Нельзя
определить ссылку как
Samp
& ref; можно
только как Samp
&ref
= ob;
Во-вторых,
нельзя переопределить ссылку в программе,
т.е. изменить объект, на какой она
ссылается.
В-третьих,
если для обращения к члену объекта, на
который указывает указатель, применяется
операция
стрелка
(–>),
то для подобной операции со ссылкой
применяется операция
точка
(.).
Например, если z
– открытая
переменная
класса Samp,
то доступ к ней из функции main()
может быть выполнен следующим образом:
Samp
ob; // объявление объекта ob
класса Samp
Samp * p =
&ob; // указателю p
присваивается адрес ob
Samp &ref
= ob; // ссылка ref
ссылается на объект ob
p->z =
5; // доступ к z
через указатель
ref.z =
6; // доступ
к z
через ссылку
Как и указатель,
ссылка сама по себе не имеет значения.
Ссылка должна на что-то ссылаться,
например, на объект.
6