Перегрузка имен подпрограмм (PascalABC.NET)

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

Слово «перегрузка» здесь никак не связано с увеличением ускорения свыше земного g. Правильнее, наверно, было бы использовать термин «перезагрузка», но что поделать? Потребность в перегрузке имен возникает, когда подпрограмма может иметь различный набор параметров.

Пусть нам нужна функция Sпр(a, b), умеющая находить площадь прямоугольника со сторонами a, b и возвращать ее значение с типом integer, если оба параметра типа integer и с типом real в прочих случаях. Как быть – называть функции разными именами? Перегрузка позволяет обойтись одним.

1 function Sпр(a, b: integer) := a * b;
2 
3 function Sпр(a, b: real) := a * b;
4 
5 begin
6   var a := Sпр(3, 7);
7   var b := Sпр(2.5, 5);
8   Print(a, b)
9 end.
21 12.5

Чем отличаются описания функций? Типами параметров. Эти типы и являются основой для перегрузки имен. Если типы аргументов полностью совпадают с одним из описаний, именно это описание будет выбрано. Если точного совпадения нет – компилятор попробует выполнить приведение типа аргументов. Поэтому в примере в первом случае вызывается первая функция, во втором – вторая.

Тип результата в перегрузке имен не участвует.