Посилання

Посилання (reference) – особливий тип даних, що є прихованою формою вказівника, який при зверненні автоматично розіменовується. Посилання можна розглядати як ще одне ім'я об'єкту.

Посилання головним чином використовуються для задання аргументів і значень, що повертаються функціями. Запис:

 

type &reference_name

 

позначає оголошення посилання на об'єкт типу type.

Наприклад:

 

int i = 1;

int &r = i; // r та i посилаються на одне і те ж ціле

int x = r; // x = 1

r = 2; // i = 2;

 

Посилання обов'язково має бути ініціалізоване, тобто повинно бути щось, ім'ям чого воно є. Ініціалізація посилання – це у жодному випадку не операція присвоювання.

Ніякі операції над посиланнями не виконуються. Наприклад:

 

int ii = 0;

int &rr = ii;

rr++; // ii збільшується на 1

int *pp = &rr; // pp вказує на ii

 

Графічно зв'язки між змінною ii, посиланням rr та вказівником pp представлені на мал. 2.1.

 

Малюнок 2.1 Зв'язки між змінною, посиланням та вказівником

 

Операція ++ над посиланням допустима, але вираз rr++ не збільшує саме посилання rr; натомість операція ++ застосовується до цілого, тобто до змінної ii. Отже, після ініціалізації значення посилання не може бути змінено: воно завжди вказує на той об'єкт, до якого було прив'язане при його ініціалізації.

Щоб одержати адресу об'єкту, який позначений посиланням rr, треба написати &rr.