Язык С++ и программирование на нем. Рейзлин В.И. - 65 стр.

UptoLike

Составители: 

67
cout <<”интеграл от первой функции = ”<<i<<’\n’;
i = trap(a, b, 50, f2);
cout <<”интеграл от второй функции = ”<<i<<’\n’;
}
Отметим, что в теле функции trap можно также писать обраще-
ния func(a), func(b) и т.д.
16.5. Ссылки
Тип “ссылка на тип” определяется так: тип&, например:
int& или double&
Ссылочные типы устанавливают псевдонимы объектов. Ссылка
обязательно должна быть инициализирована. После инициализации ис-
пользование ссылки дает тот же результат, что и прямое использование
переименованного объекта.
Рассмотрим инициализацию ссылки:
int i=0;
int& iref = i;
Здесь создана новая переменная типа ссылка на int с именем iref.
Физически iref это постоянный указатель на int и, следовательно,
значение ссылки после инициализации не может быть изменено. Ини-
циализирующим значением в нашем случае является адрес переменной
i, т.е. при инициализации ссылка ведёт себя как указатель.
При использовании ссылка ведёт себя не как указатель, а как пе-
ременная, адресом которой она инициализирована:
iref ++; // то же, что и i++;
int *ip=&iref; // то же, что и ip=&i.
Итак, iref стало другим именем, псевдонимом переменной i.
Ссылку можно определить так:
ссылка есть такой постоянный указатель на объект, к которому
всегда при его использовании неявно применяется операция разрешения
указателя *.
Если тип инициализированной ссылки не совпадает с типом объ-
екта, создаётся новый анонимный объект, для которого ссылка является
псевдонимом. Инициализатор преобразуется и его значение использует-
ся для установки значения анонимного объекта.
double d=0.0;
int& ir = d; // Создан анонимный объект типа int;