重载功能和程序,有什么规则吗?



希望对一个过程和一个函数使用相同的名称,我可以这样做吗,关于这个问题有什么规定吗?

 /// 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 ;

可以使用相同的名称重载函数和过程。

但是,不能依赖函数返回类型进行重载判别。因此,如果函数和过程具有相同的参数列表,则它们不能被重载。

我要提醒你不要因为超载而发疯。你可能会陷入各种各样的陷阱。例如,如果根据浮点数或整数参数进行区分,则很难确定调用的是哪个重载。正如Embarcadero在XE3 TStream重载中发现的那样,当您区分指针和动态数组时,也有很大的混淆范围。

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

最新更新