overload 函数或过程重载

//overload 函数或过程重载 

重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同。
实际上,编译器是通过检测参数来确定需要调用的例程。
下面是从VCL的数学单元(Math Unit)中摘录的一系列函数:

function Min (A,B: Integer): Integer; overload;
function Min (A,B: Int64): Int64; overload;
function Min (A,B: Single): Single; overload;
function Min (A,B: Double): Double; overload;
function Min (A,B: Extended): Extended; overload;

当调用方式为Min (10, 20)时,编译器很容易就能判定你调用的是上列第一个函数,因此返回值也是个整数。

声明重载函数有两条原则:
1 每个例程声明后面必须添加 overload 关键字。 
2 例程间的参数个数或(和)参数类型必须不同,返回值不能用于区分各例程。 


//下面是ShowMsg 过程的三个重载过程。

procedure ShowMsg (str: string); overload;
begin
  MessageDlg (str, mtInformation, [mbOK], 0);
end;

procedure ShowMsg (FormatStr: string; Params: array of const); overload;
begin
  MessageDlg (Format (FormatStr, Params), mtInformation, [mbOK], 0);
end;
procedure ShowMsg (I: Integer; Str: string); overload;
begin
  ShowMsg (IntToStr (I) + ' ' + Str);
end;

三个过程分别用三种不同的方法格式化字符串,然后在信息框中显示字符串。
下面是三个例程的调用:
ShowMsg ('Hello');
ShowMsg ('Total = %d.', [100]);
ShowMsg (10, 'MBytes');




原文地址:https://www.cnblogs.com/xe2011/p/2531641.html