Skip to content

OVERLOAD


指定过程名称可以被重载

语法

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)
Sleep

end GeSHi

与QB的差异

  • FreeBASIC 新增

参见

  • Declare
  • Sub, Function

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系