尽管进行了多年的 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 方法。这是某种编译时快捷方式,用于在类的方法和类接受的接口的接口指针之间进行分配,稍后在运行时解决?如果有人能提供一些关于它是如何工作的信息以及德尔福成语支持这种结构的信息,我想知道。