OVERLOAD
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgOverload
- 最后更新: 2021-08-20
指定过程名称可以被重载
语法
vb
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])] [ byref ] 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])] [ byref ] as return_type [Static] [Export]
..procedure body..
End Function描述
在过程声明中,Overload 允许过程名称被重载,即其他过程(无论是子程序还是函数)可以使用相同的名称声明,前提是它们的参数列表是唯一的。如果两个参数列表包含不同数量的参数,或参数类型不同,则认为它们是唯一的。注意,如果两个或多个过程仅返回类型不同,则不能用相同的名称声明。
可变参数过程名称永远不能被重载。
一旦某个过程名称被声明为重载,后续使用该名称的声明无需再指定 Overload,但允许指定。
在成员过程声明中,Overload 不是必需的,因为它们总是隐式重载的。
调用重载的过程名称时,编译器会将调用实参的类型与每个候选过程的参数类型进行比较,计算匹配分数(主要根据数据类型本身进行解析,次要根据数据类型大小进行解析)。
最高匹配分数的过程胜出。如果最高分数过低,或者多个重载过程拥有相同的最高分数,编译器将在编译时生成错误(无匹配过程或调用不明确)。
示例
start GeSHi
vb
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)
Sleepend GeSHi
与QB的差异
- FreeBASIC 新增
参见
DeclareSub,Function
返回 目录