2009-10-19 73 views
15

我想知道什麼樣的操作符重載是可能的(以及什麼版本的Delphi)? 感謝Hallvard's great write-up on operator overloading,我所知道的:Delphi支持哪些操作符重載?

  • 加(左,右:類型):類型(對於 '+' 操作符)
  • 減(左,右:類型):類型(對' - 」運營商)
  • 乘(左,右:類型):類型(爲 '*' 運算符)
  • 鴻溝(左,右:類型):類型(對於 '/' 經營者)
  • 隱(aValue:Type):AnotherType和
  • 隱式(aValue:AnotherType):Type(for隱式分配:一個:= b)的
  • 顯式(安勤:類型):AnotherType和
  • 顯式(安勤:AnotherType):類型(對於 '蒙上' 顯性assignmetns:A:=(B)型

但是,我不知道的是'=','< =','<','<>','>'和'> ='運算符的名稱。這些是否存在,以及我可以使用哪些Delphi版本?

PS:我還在使用Delphi 2009年的時刻,所以我還會有一個強大的升級,參數,如果2010提供這些;-)

回答

16

其實,我找到了答案,這一點我自己,但保留了一個問題,我可以想象人們會在計算器上定期搜索這些信息;

運營商overloaders官方的描述可以在這裏找到:http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

主要是,我一直在尋找那些被命名爲:

  • 相等, '=' 比較:等於(A:類型; b:type):Boolean;
  • NotEqual,'<>'比較:NotEqual(a:type; b:type):Boolean;對於'>'比較:GreaterThan(a:type; b:type)Boolean; GreaterThanOrEqual,for'> ='比較:GreaterThanOrEqual(a:type; b:type):resultType;
  • LessThan,'<'compare:LessThan(a:type; b:type):resultType;
  • LessThanOrEqual,'< ='比較:LessThanOrEqual(a:type; b:type):resultType;
+0

網頁已經移到[這裏](http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(德爾福)) – pritaeas 2012-01-18 13:07:00

+0

@pritaeas:謝謝,我更新的鏈接。 – PatrickvL 2012-01-19 12:24:56

9

我只是把我的notes online會議的可空類型與運算符重載,我在幾次會議期間。

它現在包含一個表的運營商,名稱和什麼工作/不工作。 WordPress最初格式錯誤,但我設法恢復它。您也可以下載full set of slides and source code demos

簡而言之:

  • 的文件(甚至DocWiki)是不完整的,並注意可靠
  • 你不能重載不按位運算符,如BitwiseNot不被編譯器支持。你必須重載邏輯非操作符。
  • 超負荷運營商配對適用
  • 要知道現有的運營商
  • 實施隱性符當

希望這有助於你要非常小心的。讓我知道你是否需要更多的信息:我已經完成了一些運算符重載的生產工作。

--jeroen

+0

謝謝 - 現在你提到它了,我以前看過你的幻燈片。總而言之,一個好的概述。 很遺憾,Delphi社區必須記錄這一點;我希望CodeGear/Embarcadero提供更爲全面的文檔。 – PatrickvL 2009-10-19 13:56:37

+0

我需要找時間先在線上獲取我的東西,然後更新正確的Wiki。 – 2009-10-19 14:35:53

+0

按位不是'AnInteger XOR -1' – Johan 2011-12-09 15:20:49