我想对程序和功能使用相同的名称,我可以这样做,有关这个问题的任何规定吗?
/// 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 ;
答案 0 :(得分:8)
您可以使用相同的名称重载功能和过程。
但是,您不能依赖函数返回类型来进行过载区分。因此,如果您有一个函数和一个具有相同参数列表的过程,则它们不能被重载。
我会提醒你不要因为超载而生气。你可以陷入各种各样的陷阱。例如,如果基于浮点或整数参数进行区分,则很难确定要调用的是哪个重载。当您区分指针和动态数组时,也存在很多混淆的空间,因为Embarcadero发现了XE3 TStream重载。
事实上,重载规则的文档是不完整的,完全理解编译器行为的唯一方法是通过逆向工程。