Operator overloading is done using what I would call Operator Mapping. The following example the compiler "maps" + operator to the Add Method.

[pascal]
TMyClass = class
class operator Add(a, b: TMyClass): TMyClass;
end;
[/pascal]

[pascal]
var a,b : TMyClass;
begin
a + b; // Calls TMyClass.Add(a, b: TMyClass): TMyClass
end;
[/pascal]

This is straight out of the BDS 2006 Manual. I think this is different to the way free pascal does it.... :?: