希望对一个过程和一个函数使用相同的名称,我可以这样做吗,关于这个问题有什么规定吗?
/// 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重载中发现的那样,当您区分指针和动态数组时,也有很大的混淆范围。
事实上,重载规则的文档是不完整的,完全理解编译器行为的唯一方法是通过逆向工程。