譬如上面的 record 能夠這樣聲明:ide
type TMyRec = record name: string; age: Word; class operator GreaterThan(a,b: TMyRec): Boolean; end;
還得有方法的實現(遺憾的是有些不能用 Ctrl+Shift+C 自動創建, 那就複製吧):spa
class operator TMyRec.GreaterThan(a,b: TMyRec): Boolean; {注意複製後再加上方法名: "TMyRec."} begin Result := a.age > b.age; end;
Delphi for Win32 只支持 record 類型的運算符重載,而 Delphi .NET 還支持 class 類型的運算符重載
下面是Delphi支持的可重載運算符ip
運算符 類型 聲明語法 應用符號
Implicit 轉換 Implicit(a: type): resultType; 隱式轉換ci
Explicit 轉換 Explicit(a: type): resultType; 顯式轉換string
負 一元運算 Negative(a: type): resultType; -it
正 一元運算 Positive(a: type): resultType; +class
遞增 一元運算 Inc(a: type): resultType; Inc語法
遞減 一元運算 Dec(a: type): resultType; Dec方法
邏輯非 一元運算 LogicalNot(a: type): resultType; notdi
按位非 一元運算 BitwiseNot(a: type): resultType; not
截取 一元運算 Trunc(a: type): resultType; Trunc
舍入 一元運算 Round(a: type): resultType; Round
等於 比較 Equal(a: type; b: type) : Boolean; =
不等於 比較 NotEqual(a: type; b: type): Boolean; <>
大於 比較 GreaterThan(a: type; b: type) Boolean; >
大於等於 比較 GreaterThanOrEqual(a: type; b: type): resultType;>=
小於 比較 LessThan(a: type; b: type): resultType; <
小於等於 比較 LessThanOrEqual(a: type; b: type): resultType; <=
加 二元運算 Add(a: type; b: type): resultType; +
減 二元運算 Subtract(a: type; b: type): resultType; -
乘 二元運算 Multiply(a: type; b: type): resultType; *
除 二元運算 Divide(a: type; b: type): resultType; /
整除 二元運算 IntDivide(a: type; b: type): resultType; div
模 二元運算 Modulus(a: type; b: type): resultType; mod
左移 二元運算 ShiftLeft(a: type; b: type): resultType; shl
右移 二元運算 ShiftRight(a: type; b: type): resultType; shr
邏輯與 二元運算 LogicalAnd(a: type; b: type): resultType; and
邏輯或 二元運算 LogicalOr(a: type; b: type): resultType; or
邏輯異或 二元運算 LogicalXor(a: type; b: type): resultType; xor
按位與 二元運算 BitwiseAnd(a: type; b: type): resultType; and
按位或 二元運算 BitwiseOr(a: type; b: type): resultType; or
按位異或 二元運算 BitwiseXor(a: type; b: type): resultType; xor