Посилання як псевдоніми змінних

//Alias.cpp: Посилання як псевдонім.

// Ініціалізація цілої змінної.

// Ініціалізація посилання як псевдоніму iVar.

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

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

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

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

printf("iPtr = %p, irPtr = %p\n", iPtr, irPtr);

Ще раз наголосимо, що посилання після ініціалізації не можна змінити; всі звернення до посилання будуть насправді ставитися до змінної, іменем якої вона була ініціалізована.

Посилання як параметри функції

Усе сказане у попередньому параграфі немає істотного практичного значення; до чого, справді, вводити посилання на змінну, якщо з тим самим успіхом можна звертатися до неї самої? Інакше справа у випадку, коли посиланням оголошується параметр функції.

Це означає, що якщо оголосити формальний параметр як посилання, то при виклику він буде ініціалізований як псевдонім змінної-аргументу. Якщо говорити про конкретну реалізацію цього механізму, функції передається покажчик на змінну, що автоматично розіменується при зверненні до нього в тілі функції.

//RefPar.cpp: Передача параметрів за посиланням.

void change (int &x, int &y)

Передаючи параметри за посиланням, потрібно завжди пам'ятати про можливі побічні ефекти. Якщо тільки функція не повинна змінювати значення свого аргументу, краще оголосити параметр як посилання на константу (наприклад, const int SiVal). Тоді при спробі надати параметру значення в тілі функції компілятор видасть повідомлення про помилку.