Drum meinte ich ja, im Falle von
bar := new TMyFooClass();
würde der Compiler dann Standard-Constructor "Create" aufrufen, sich einen Suchen, welche den übergebenen Parametern entspricht, falls es diesen gibt und am Ende es zu einem
bar := TMyFooClass.Create();
umwandeln.
Und schon wäre das
OOP-Prinzip gewahrt.
Nur wird es eben schwer einen neues "reserviertes Wort" einzuführen.
Das ist wohl auch der Grund, warum es "Class Helper" und nicht nur "Helper" heißt, da durch das reservierte "Class" das Helper geschützt/eingeleitet wird, womit die Syntax dennoch kompatibel bleibt.
Wenn man eine Syntax von Grund auf neu baut, könnte man z.B. NEW gleich reservieren.
Mit den großen Neuerungen und vielen Änderungen seitens D2009/XE2 hätte man diesbezüglich schnell noch ein paar neue "reservierte" Wörter mit einführen und alte Makel in der Syntax ausbessern können.
Wenn sowieso genug angepaßt werden muß, dann kommt es auf die paar Änderungen auch nicht mehr an.
Sowas wäre syntaktisch möglich:
Delphi-Quellcode:
type
TMyClass = class managed(Txyz)
end;
genauso wie ja auch sowas gehn:
Delphi-Quellcode:
type
TMyClass = class sealed(Txyz)
end;
TMyClass = class abstract(Txyz)
end;