C++ Программирование в среде С++ Builder 5


Ссылки


В C++ имеется модифицированная форма указателей, называемая ссылкой (reference). Ссылка — это указатель, который автоматически разыменовывается при любом обращении к нему. Поэтому ссылке, как таковой, нельзя присвоить значение, как это можно сделать с обычным указателем. Ссылку можно только инициализировать.

Ссылки как псевдонимы переменных

Переменная-ссылка объявляется со знаком “&”, предшествующим ее имени; инициализирующим выражением должно быть имя переменной. Рассмотрите такой пример:

///////////////////////////////////////////////////////////////////

// Alias.cpp: Ссылка как псевдоним.

//

#include <stdio.h>

int main(void)

{

int iVar = 7777;

// Инициализация целой переменной.

int *iPtr = siVar;

// Инициализация указателя адресом

// iVar.

int &iRef = iVar;

// Инициализация ссылки как

// псевдонима iVar.

int *irPtr = &iRef;

// Инициализация указателя "адресом"

// ссылки.

printf("iVar = %d\n", iVar) ;

printf("*iPtr = %d\n", *iPtr);

printff'iRef = %d\n", iRef);

printf("*irPtr = %d\n", *irPtr) ;

printff'iPtr = %p, irPtr = %p\n", iPtr, irPtr);

return 0;

}

Первые четыре оператора printf выводят одно и то же число 7777. последний оператор печатает значения двух указателей, первый из которых инициализирован адресом переменной, а второй адресом ссылки. Эти адреса также оказываются одинаковыми. Как видите, после инициализации ссылки ее имя используется в точности как имя ассоциированной с ней переменной, т. е. как псевдоним.

Еще раз подчеркнем, что ссылку после инициализации нельзя изменить; все обращения к ссылке будут относиться на самом деле к переменной, именем которой она была инициализирована.

Ссылки в качестве параметров функции

Все сказанное в предыдущем параграфе не имеет существенного практического значения; к чему, в самом деле, вводить ссылку на переменную, если с тем же успехом можно обращаться к ней самой? По-иному дело обстоит в случае, когда ссылкой объявляется параметр функции.




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