С++ содержит несколько составных типов, одним из которых являются ссылки.
Ссылка - это альтернативное имя объекта. В определении ссылочного типа используется оператор в форме &имя
int count = 5;
int &refCount = count; //refCount ссылается на count
При создании ссылку необходимо обязательно инициализировать.
int &refCount; //ошибка - ссылка ни к чему не привязана
После того как ссылка определена, все операции с ней будут осуществляться с объектом, с которым связана ссылка.
refCount = 0; // присваивает 0 объекту count
Поскольку ссылка - не объект, нельзя определить ссылку на ссылку.
Ссылки должны иметь тот же тип, что и объект на который она ссылается.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int num1 = 10;
int &ref1 = num1;
//амперсанд & можно также указывать возле типа данных
int& ref2 = num1;
cout << "Переменная num1 содержит: " << num1
<< "\nСсылка ref1 содержит: " << ref1
<< "\nСсылка ref2 содержит: " << ref2
<< "\nАдреса num1, ref1, ref2: "
<< &num1 << " " << &ref1 << " " << &ref2 << endl;
return 0;
}
Результат программы:
Переменная num1 содержит: 10
Ссылка ref1 содержит: 10
Ссылка ref2 содержит: 10
Адреса num1, ref1, ref2: 0x78335e91c40c 0x78335e91c40c 0x78335e91c40c
Как можно убедиться, все три значения ссылаются на один и тот же адрес.