kann fpc mehr als Delphi? Ich glaube nicht. In Delphi ohne DotNet gibt es Operator Overloading nur für Records, aber nicht für Klassen und die Deklaration heißt dennoch Class Operator. Ich hab mal folgendes Programm mit Lazarus getestet und dabei folgende Ausgabe gekriegt. Ein Destruktor Aufruf zu wenig!
Code: Alles auswählen
Create
Create
Create
Destroy
Destroy
program Constr;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
{$R *.res}
type
tMyClass = class
Constructor Create;
Destructor Destroy; override;
end;
var
a, b : tMyClass;
Constructor tMyClass.Create;
begin
inherited;
writeln('Create');
end;
Destructor tMyClass.Destroy;
begin
writeln('Destroy');
inherited;
end;
Operator +(a, b : tMyClass) : tMyClass;
begin
Result := tMyClass.Create;
end;
begin
a := tMyClass.Create;
b := tMyClass.Create;
a := a + b;
a.Free;
b.Free;
readln;
end.