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