delphi 運算符重載

譬如上面的 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

相關文章
相關標籤/搜索