Несмотря на годы программирования 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 поддерживает такую конструкцию, которую я хотел бы знать.