【发布时间】:2012-02-01 20:58:37
【问题描述】:
考虑假设的对象层次结构,从:
TFruit = class(TObject)
public
constructor Create(Color: TColor); virtual;
end;
及其后代:
TApple = class(TFruit)
public
constructor Create(); overload; virtual;
constructor Create(Color: TColor); overload; override; //deprecated. Calls other constructor - maintaining the virtual constructor chain
end;
这里的想法是我重写基类的虚拟构造函数,重载也恰好是虚拟的.
德尔福抱怨:
方法 'Create' 隐藏基本类型 'TFruit' 的虚拟方法
除了它没有隐藏它 - 它就在那里!
- 我覆盖祖先中的虚方法,并且
- 我重载了另一个版本
怎么了?
【问题讨论】:
-
我得到“方法‘创建’隐藏了基本类型‘TFruit’的虚拟方法”;你真的得到“基本类型'TApple'”吗?
-
@RBA 不完全是,在这种情况下警告是不正确的,尽管您可以使用
reintroduce;来避免它。 -
这是 Delphi 5 特有的?
-
@EMBarbosa 不,但是当使用旧版本时,您可能想知道这样的事情是否是特定于该版本的。 OP 只是提供信息。
-
@NGLN 是的。所以我认为它不需要delphi-5标签?
标签: delphi overloading