过载功能和程序,任何规则?

Fra*_*anz 1 delphi

我想对程序和功能使用相同的名称,我可以这样做,有关这个问题的任何规定吗?

 /// first version 
 function RunMyImageProcess (aRect : TRect; aBitmap : TBitmap ):  TPoint; overload ;

 ///  a overload version, this works  , it is simple :-) 
 function RunMyImageProcess (aRect : TRect; aBitmap : TBitmap ; aprocessflag : Boolean):  TPoint; overload ; 

 ///  need now a procedure
 ///  will return 2 Points now !!!
 ///   can I do this in DELPHI ???? 
 procedure RunMyImageProcess (var LowerLeft, Upperright: TPoint; aBitmap : TBitmap ; aprocessflag : Boolean):  boolean; overload ;
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 8

您可以使用相同的名称重载功能和过程.

但是,您不能依赖函数返回类型来进行过载区分.因此,如果您有一个函数和一个具有相同参数列表的过程,则它们不能被重载.

我会提醒你不要因为超载而生气.你可以陷入各种各样的陷阱.例如,如果基于浮点或整数参数进行区分,则很难确定要调用的是哪个重载.当您区分指针和动态数组时,也存在很多混淆的空间,因为Embarcadero发现了XE3 TStream重载.

事实上,重载规则的文档是不完整的,完全理解编译器行为的唯一方法是通过逆向工程.

  • @TLama这是对的.但仅限于扩展语法模式:http://docwiki.embarcadero.com/RADStudio/XE3/en/Extended_syntax_(Delphi) (2认同)