* können Operatoren beinhalten (gilt diese Einschränkung für Klassen noch immer?)
Das wird und kann sich auch nicht ändern.
Zitat von
siehe Beitrag #9:
Bei Objekten geht sowas aber nicht (niemals, also nicht ohne soeinen komischen Garbage-Collector)
Wie gesagt, für Interfaces wäre es eigentlich möglich.
Was bitte ist das für eine fadenscheinige Begründung? Und was hat die Verwendung von Operatoren mit Garbage-Collection zu tun? Das man in einer nativen Programmiersprache bezüglich dem Freigeben von Objekten mehr aufpassen muss als in .NET oder Java muss den Anwendern eben bewusst gemacht werden.
Delphi-Quellcode:
type
TIntClass = class
Value: Integer;
class operator Add(aLeft, aRight: TIntClass): TIntClass;
constructor Create(aValue: Integer);
end;
constructor TIntClass.Create(aValue: Integer);
begin
Value := aValue;
end;
var
a, b, c: TIntClass;
begin
// try ... finally wird absichtlich weggelassen
a := TIntClass.Create(31);
b := TIntClass.Create(11);
c := a + b;
Writeln('c: ', c.Value);
a.Free;
b.Free;
c.Free;
end.
Ich sehe jetzt zum Beispiel auch nichts was mich daran hindern würde dies in FPC zu implementieren (Operatoren für Interfaces wären allerdings wieder interessanter zu implementieren). Wenn mir mal langweilig ist, muss ich mal einen Proof of Concept machen
Gruß,
Sven