Назначение интерфейсных указателей в объявлении класса в 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 могут быть назначены до вызова конструктора. Является ли это своего рода ярлыком времени компиляции для создания назначений между методами класса и указателями интерфейса для интерфейса, который принимает класс, которые позже будут разрешены во время выполнения? Если кто-то может предоставить немного информации о том, как это работает, и какая идиома Delphi поддерживает такую конструкцию, я бы хотел знать.

10
задан Robert Oschler 14 November 2011 в 15:47
поделиться