Das Überschreiben und Verdecken sollte es aber auch im C++ geben. (auch wenn dort die Syntax vielleicht etwas anders ist)
Inherited hat damit erstmal grundsätzlich garnichts zu tun.
Der Aufruf von inherited besagt nur, daß man an dieser Stelle die Methode eines Vorfahren und nicht eine "Eigene" aufrufen will
und das geht sowohl bei überdeckten, als auch bei überschriebenen Methoden.
Delphi-Quellcode:
type
TMyClassA = class
procedure A; overload; // überladen
procedure A(i: Integer); overload;
procedure X;
procedure Y; virtual; // mit oder ohne abstract
procedure Z; virtual; // mit oder ohne abstract
end;
TMyClassB = class(TMyClassA)
procedure X; // verdeckt
procedure Y; // verdeckt
procedure Z; override; // überschrieben
end;
var
C: TMyClassA;
D: TMyClassA;
E: TMyClassB;
C := TMyClassB.Create;
C.Y; // TMyClassA.Y wird ausgeführt, da die Methode nur verdeckt, aber nicht überschrieben wurde.
C.Z; // TMyClassB.Z wird ausgeführt
C.Free;
C := TMyClassA.Create;
D := TMyClassB.Create;
E := TMyClassB.Create;
C.Y; // TMyClassA.Y
C.Z; // TMyClassA.Z
D.Y; // TMyClassA.Y
D.Z; // TMyClassB.Z
E.Y; // TMyClassB.Y
E.Z; // TMyClassB.Z