С++ имеет механизм, с помощью которого можно возвращать значение функции по ссылке. Одной из причин применения этого механизма является необходимость избежать копирования объектов большого размера. Другой причиной является открывающаяся возможность использовать вызов функции в качестве левого операнда операции присваивания. Хотя без этого механизма можно спокойно обойтись и применяется он крайне редко (в случаях, когда необходимо внести путаницу в текст программы), приведём пример его использования просто для получения представления о нём.
#include <iostream>
#include <conio>
using namespace std;
int X; // глобальная переменная видна и в main(), и в setx() (по умолчанию Х=0)
int& setx(); // прототип функции
int main() { // присваивание значения x при
setx() = 92; // помощи вызова функции слева
cout << "x=" << X << endl; // вывод нового значения x (увидим х=92)
getch(); return 0;
}
int& setx() {
return X; // возвращает значение, которое будет изменено
}
Здесь, функция, возвращающая ссылку, интерпретируется как переменная. Возвращение функцией ссылки равносильно возврату псевдонима переменной, входящей в оператор return.