Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 13 Объекты_Указатели 2015.doc
Скачиваний:
52
Добавлен:
29.02.2016
Размер:
81.41 Кб
Скачать

Ссылка на объект

Ссылка на объект – это ещё одно имя объекта. Если, например, объявлен объект 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