[fpc-devel] override works, even if result type changed?

Martin Frb lazarus at mfriebe.de
Sun Feb 23 17:56:26 CET 2014


Just found that the below works.

Note, that the result type of "a" (overridden) is different.
Well, TFoo2 will always satisfy the needs of TFoo, so it seems save. I 
still found it surprising. Is it intended?


program Project1;
type
   TFoo= class
   public
     function a: TFoo; virtual;
   end;

   TFoo2= class(TFoo)
   public
     function a: TFoo2; override;
   end;

function TFoo2.a: TFoo2;
begin
end;

function TFoo.a: TFoo;
begin
end;

begin
end.




More information about the fpc-devel mailing list