Посилання – це друге ім’я для іншої змінної. Посилання оголошуються за допомогою символу &. При оголошенні посилання повинні бути ініціалізовані (посилання може бути ініціалізоване лише один раз, неможливо зробити так, щоб дане посилання посилалося на інший об’єкт).
double agent = .028;
double &bond = agent; //bond посилається на agent
// ...
bond /= 4.0; // agent == .007
Посилання підвищують ефективність програми під час передачі великих об’єктів у функції, оскільки не вимагають копіювання об’єкта в стек.
Приклад:
// LastChar.cpp
#include <string>
#include <iostream>
using namespace std;
char LastChar(const string& s)
{
return s.length()?s[s.length()-1]:' ';
}
void main()
{
string word = "barbecue";
char c = LastChar(word);
cout<<c<<endl;
}
Посилання надають функціям механізм зміни значення переданих їм аргументів.
inline void Swap (int& a, int& b)
{
int t = a;
a = b;
b = t;
}
// ...
Swap (x, y); // не потрібно передавати адреси
Посилання використовуються, головним чином, при визначенні функцій для типу class. Посилання не є самостійним типом і існують тільки після ініціалізації. Які-небудь операції можуть виконуватися не над посиланнями, а над об’єктами, на які вони посилаються. Посилання не може посилатися на інше посилання. Крім того, не може бути ні масиву посилань, ні покажчиків на посилання.
Лекція 6. Масиви і структури