在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实现. 据我所知,从界面支持添加到语言开始就一直受到支持.你可能没有注意到它,因为它不经常使用或需要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |