Перегрузка имен подпрограмм (PascalABC.NET): различия между версиями

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
(Новая страница: «{{TOCRight}} Слово «перегрузка» здесь никак не связано с увеличением ускорения свыше земного...»)
 
 
Строка 1: Строка 1:
 
{{TOCRight}}
 
{{TOCRight}}
  
Слово «перегрузка» здесь никак не связано с увеличением ускорения свыше земного g. Правильнее, наверно, было бы использовать термин «перезагрузка», но что поделать? Потребность в перегрузке имен возникает, когда подпрограмма может иметь различный набор параметров. Пусть нам нужна функция Sпр(a, b), умеющая находить площадь прямоугольника со сторонами a, b и возвращать ее значение с типом integer, если оба параметра типа integer и с типом real в прочих случаях. Как быть – называть функции разными именами? Перегрузка позволяет обойтись одним.
+
Слово «перегрузка» здесь никак не связано с увеличением ускорения свыше земного g. Правильнее, наверно, было бы использовать термин «перезагрузка», но что поделать? Потребность в перегрузке имен возникает, когда подпрограмма может иметь различный набор параметров.
 +
 
 +
Пусть нам нужна функция Sпр(a, b), умеющая находить площадь прямоугольника со сторонами a, b и возвращать ее значение с типом integer, если оба параметра типа integer и с типом real в прочих случаях. Как быть – называть функции разными именами? Перегрузка позволяет обойтись одним.
  
 
<syntaxhighlight lang="pascal" line>
 
<syntaxhighlight lang="pascal" line>

Текущая версия на 20:29, 21 мая 2023

Слово «перегрузка» здесь никак не связано с увеличением ускорения свыше земного 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

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

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