On 02/02/2026 22:59, Michael Van Canneyt via fpc-devel wrote:


On Mon, 2 Feb 2026, Martin Frb via fpc-devel wrote:



In a class, an overridden function can actually return a subclass of what the virtual method returned.

I don't understand this remark. Please explain ?

See below, the overriden method returns a subclass. (works with subclass as result too).

program Project1;
{$Mode objfpc}{$Interfaces corba}
type
  IFoo = interface end;
  IFoo2 = interface(IFoo) end;

  TBar = class
    function abc: IFoo; virtual;
  end;

  TBar2 = class(TBar)
    function abc: IFoo2; override; // inherited interface as result type
  end;

function TBar2.abc: IFoo2;
begin
end;
function TBar.abc: IFoo;
begin
end;

begin
end.

_______________________________________________
fpc-devel maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to