过来看看.关于构造函数override 及overload的问题(50分)

  • 主题发起人 主题发起人 zmxk
  • 开始时间 开始时间
Z

zmxk

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个新类,继承已有的基类如
基类:
constructor Create(AOwner: TComponent)
override;
我再写了个新类但加多了一个参数;
constructor Create(AOwner: Tcomponent;var WebWatch: TWebwatch);override;
加上这override时错误提示:
Declaration of 'Create' differs from previous declaration
后来改用overload或去掉不注明任何调过协定
constructor Create(AOwner: Tcomponent;var WebWatch: TWebwatch);overload;
时则提出警告如下
Method 'Create' hides virtual method of base type 'TOleControl'
我觉得很奇怪,用overload应该是对的。怎么会提出警告,请帮忙,有分的。


 
看看基类的create方法有没有定义虚方法virtual
 
基类:
constructor Create(AOwner: TComponent)
override;
子类:
constructor Create(AOwner: Tcomponent;var WebWatch: TWebwatch);reinstrance;
子类实现:
constructor Create(AOwner: Tcomponent;var WebWatch: TWebwatch);
begin
Inherited Create(AOwner);
接下去加个性处理代码
....
end;

原因:基类中没有你子类声明的构造函数,故不能 override
你可以在子类中重新声明新的构造函数,但同时得有 reinstrance 指示符号
再在新声明的构造函数中调用基类的实现

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
772
import
I
I
回复
0
查看
597
import
I
后退
顶部