Du darfst auch nicht folgendes machen:
Delphi-Quellcode:
procedure DoIt(Intf: IInterface);
begin
end;
...
DoIt(TMyClass.Create); // falsch!
In der ersten Variante kommt auch die Referenzzählung durcheinander.
Nein, kommt sie nicht. Das ist kein Problem
Doch, es gab Compiler-Versionen, bei denen das schief ging. Ich bin mir allerdings gerade unsicher, ob das mit oder ohne const-Parameter war. Eines von beiden schlug fehl.
Ja, wenn die Methode so definiert ist
Delphi-Quellcode:
procedure DoIt(const Intf: IInterface);
begin
end;
dann wird der RefCount nicht erhöht und man hat bei
DoIt(TMyClass.Create);
ein Mem-Leak. Das ist auch heute noch so.