Overload
 
Указывает, что имя процедуры может быть перегружено

Синтаксис

Declare [Static] Sub procedure_name [cdecl|stdcall|pascal] Overload [Alias "external_name"] [([parameter_list])] [Constructor [priority]] [Static] [Export]

Declare [Static] Function procedure_name [cdecl|stdcall|pascal] Overload [Alias "external_name"] [([parameter_list])] As return_type [Static] [Export]

[Public|Private] Sub procedure_name [cdecl|stdcall|pascal] Overload [Alias "external_name"] [([parameter_list])] [Constructor [priority]] [Static] [Export]
..procedure body..
End Sub

[Public|Private] Function procedure_name [cdecl|stdcall|pascal] Overload [Alias "external_name"] [([parameter_list])] As return_type [Static] [Export]
..procedure body..
End Function

Описание

В описаниях процедур, Overload позволяет именам процедур быть перегруженными, то есть, другие процедуры могут быть объявлены с тем же именем, если их списки параметров являются уникальными. Два списка параметров являются уникальными, если они содержат различное число параметров, или имеют параметры различных типов. Обратите внимание, что это означает, что две или более процедуры не могут быть объявлены с тем же именем, если они отличаются только возвращаемым типом.

После того, как имя процедуры был объявлено как перегруженное, дальнейшие заявления, использующие имя, не нуждаются в обязательном указании Overload, но допускается.

Overload не является обязательным в описаниях процедур-элементов, так как они всегда явно перегружены.

При вызове перегруженной процедуры,  компилятор определяет наиболее подходящее определение для использования,  среди набора совместимых кандидатов, сравнивая типы аргументов, используемые для вызова процедуры с типами параметров, указанных в определениях. Если совпадение не найдено или найдено неоднозначное совпадение, компилятор генерирует ошибку во время компиляции.

Пример

Declare Function SUM Overload (A As Integer,B As Integer) As Integer
Declare Function SUM Overload (A As Single,B As Single) As Single
Function SUM  (A As Integer,B As Integer) As Integer
   Function=A+B
End Function   
Function SUM  (A As Single,B As Single) As Single
   Function=A+B
End Function   
Dim As Integer A,B
Dim As Single A1,B1
A=2
B=3
A1=2.
b1=3.
Print SUM(A,B)
Print SUM (A1,B1)
Sleep


Отличия от QB

  • Новое в FreeBASIC

См. также