Ссылка – это еще одно имя переменной. Если имеется какая-либо переменная, например
Complex x;
то можно определить ссылку на переменную x как
Complex& y = x;
и тогда x и y обозначают одну и ту же величину. Если выполнены операторы
x.real = 1; x.imaginary = 2;
то y.real равно 1 и y.imaginary равно 2. Фактически, ссылка – это адрес переменной (поэтому при определении ссылки используется символ & -- знак операции взятия адреса), и в этом смысле она сходна с указателем, однако у ссылок есть свои особенности.
Во-первых, определяя переменную типа ссылки, ее необходимо инициализировать, указав, на какую переменную она ссылается. Нельзя определить ссылку
int& xref;
можно только
int& xref = x;
Во-вторых, нельзя переопределить ссылку, т.е. изменить на какой объект она ссылается. Если после определения ссылки xref мы выполним присваивание
xref = y;
то выполнится присваивание значения переменной y той переменной, на которую ссылается xref. Ссылка xref по-прежнему будет ссылаться на x. В результате выполнения следующего фрагмента программы:
int x = 10; int y = 20; int& xref = x; xref = y; x += 2; cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "xref = " << xref << endl;
будет выведено:
x = 22 y = 20 xref = 22
В-третьих, синтаксически обращение к ссылке аналогично обращению к переменной. Если для обращения к атрибуту объекта, на который ссылается указатель, применяется операция ->, то для подобной же операции со ссылкой применяется точка ".".
Complex a; Complex* aptr = &a; Complex& aref = a; aptr->real = 1; aref.imaginary = 2;
Как и указатель, ссылка сама по себе не имеет значения.Ссылка должна на что-то ссылаться, тогда как указатель должен на что-то указывать.
on_load_lecture()
Дальше »
Если Вы заметили ошибку - сообщите нам.
« |
1
|
2
|
3
|
вопросы | »