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

前端之家收集整理的这篇文章主要介绍了在Delphi 6类声明中分配接口指针?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尽管多年的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实现.

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

猜你在找的Delphi相关文章