[fpc-devel] override works, even if result type changed?
Flávio Etrusco
flavio.etrusco at gmail.com
Sun Feb 23 19:31:51 CET 2014
On Sun, Feb 23, 2014 at 1:56 PM, Martin Frb <lazarus at mfriebe.de> wrote:
> 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.
>
I hope so :) [1]
But it seems (from a 2011 blog) Delphi still doesn't allow that?
I wouldn't mind fpc allowed contravariant arguments too ;) (But I
guess I only ever missed it once or twice...)
Regards,
Flávio
[1] http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29
More information about the fpc-devel
mailing list