请高手解释一句代码的含义(50分)

  • 主题发起人 主题发起人 icc
  • 开始时间 开始时间
I

icc

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TfrxReportDatasets.Add(ds: TfrxDataSet);
begin
TfrxDatasetItem(inherited Add).DataSet := ds
//inherited Add是什么意思,从哪里继承下来的
end;
 
继承的TfrxReportDatasets的Add,但是不知道这里是怎么用的
 
inherited Add//调用父类的add函数,并且这个函数返回一个TfrxDatasetItem. TfrxReportDatasets的父类是否有一个
function TParentClassName.Add:TfrxDatasetItem;
 
它的父类是TCollection,
有这么个方法function Add: TCollectionItem;
但是一般不是只写 inherited add就可以了,为什么这里写在参数里了呢
 
TCollection是classes单元的一个类,但其add方法是没有virtual或dynamic的
 
没有人知道?
 
wrl_001 已经给你讲的非常清楚了,你还问个什么??
inherited add 就是执行父类的add方法, 这个方法如果是个过程,没有返回值,
就直接调用inherited add
就可以,
如果add返回的有值,又想直接使用返回值,当然是上面的用法了。这有什么疑问啊

还有 谁说只有virtual或dynamic 才可以继承啊? 好好翻基础书去。

不是没有人知道,而是有人给你讲了,你还不懂
 
因为继承了包含有function Add: TCollectionItem;方法的父类,为了避免在自己的Add
方法中混淆自己和父类的Add方法,采用了 inherited Add 显式的调用父类的Add方法。与
通常我们所见到的inherited的用法稍有不同的是,由于这个方法有返回值,而且我们要对
这个值进行进一步的操作,所以才有针对返回值的强制类型转换等操作。我觉得wrl_001兄
已经说明白了...
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
550
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
319
import
I
后退
顶部