FreeBASIC マニュアルのトップに戻る

FreeBASIC Overload

目次→命令文→手続きOVERLOAD←オリジナル・サイト

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])] [ byref ] as return_type [Static] [Export]

[Public|Private] Sub procedure_name [Cdecl|Stdcall|Pascal] Overload [Alias "external_name"] [([parameter_list])] [Constructor [priority]] [Static] [Export]
..手続きの本体..
End Sub

[Public|Private] Function procedure_name [Cdecl|Stdcall|Pascal] Overload [Alias "external_name"] [([parameter_list])] [ byref ] as return_type [Static] [Export]

..手続きの本体..
End Function

記述:
手続きの宣言で、Overload を使って手続き名を多重定義できます。つまり、パラメータ・リストが一意である場合、Sub か関数かにかかわらず、同じ名前で他の手続きを宣言できます。
2つのパラメータリストが一意であるとは、2つのパラメータ・リストが、異なる数のパラメータを含む場合、または異なる型のパラメータを持つ場合を言います。
注意:これは、2つ以上の手続きで、戻り値の型だけが異なる場合は、同じ名前で宣言できないことを意味しています。
可変個引数の手続き名は、決して多重定義できません。

いったん、手続き名を、多重定義状態であると宣言すると、名前を使うさらなる宣言では、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からの違い:
参照:
手続きに戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2021-08-20 08:21:47
日本語翻訳:WATANABE Makoto、原文著作者:AntoniGual

ホームページのトップに戻る

表示-非営利-継承