加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi 6类声明中分配接口指针?

发布时间:2020-12-15 04:25:33 所属栏目:大数据 来源:网络整理
导读:尽管多年的Delphi编程我刚刚遇到了一个类声明样式,我从来没有看到支持IUnknown的类: TBCUnknown = class(TBCBaSEObject,IUnKnown)private FRefCount: integer; FOwner : Pointer;protected function IUnknown.QueryInterface = NonDelegatingQueryInterface
尽管多年的Delphi编程我刚刚遇到了一个类声明样式,我从来没有看到支持IUnknown的类:
TBCUnknown = class(TBCBaSEObject,IUnKnown)
private
  FRefCount: integer;
  FOwner   : Pointer;
protected
  function IUnknown.QueryInterface = NonDelegatingQueryInterface;
  function IUnknown._AddRef = NonDelegatingAddRef;
  function IUnknown._Release = NonDelegatingRelease;
  function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
...

您可以看到,IUnknown接口方法的类方法的分配正在类声明中进行.这对我来说真的很奇怪,特别是因为在调用构造函数之前,我没有看到IUnknown方法可以如何分配给它.这是一种编译时快捷方式,用于在类的方法和类接受的接口的接口指针之间进行分配,稍后在运行时解析?如果有人可以提供一些关于如何工作的信息,以及德尔福成语支持这种我想知道的结构.

解决方法

它被称为 Method Resolution Clause,它允许您指定实际实现指定的接口方法的方法.这意味着实现方法可以具有与接口中声明的方法不同的名称(但是方法签名仍然必须匹配).没有这个条款,Delphi会根据自己的名字自动解析实现方法.

在您的示例中,声明表示IUnknown._AddRef由TBCUnknown.NonDelegatingAddRef和IUnknown._Release由TBCUnknown.NonDelegatingRelease实现.

据我所知,从界面支持添加到语言开始就一直受到支持.你可能没有注意到它,因为它不经常使用或需要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读