2009-10-19 153 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