Delphi支持哪些类型的运算符重载?

时间:2009-10-19 09:42:26

标签: delphi operator-overloading

我想知道什么样的运算符重载是可能的(以及什么版本的Delphi)? 感谢Hallvard's great write-up on operator overloading,我知道:

  • 添加(左,右:类型):类型(对于'+'运算符)
  • 减去(左,右:类型):类型(对于' - '运算符)
  • 乘(左,右:类型):类型(对于'*'运算符)
  • 除(左,右:类型):类型(对于'/'运算符)
  • 隐式(aValue:Type):AnotherType和
  • 隐式(aValue:AnotherType):类型(用于隐式赋值:a:= b)
  • 显式(aValue:Type):AnotherType和
  • 显式(aValue:AnotherType):类型(对于'casts'的显式assignmetns:a:= Type(b)

然而,我不知道的是'=','< =','<','<>','>'的名称和'> ='运营商。这些存在,我可以使用Delphi版本吗?

PS:我现在仍然使用Delphi 2009,所以如果2010提供这些,我会有另一个强大的升级论证; - )

2 个答案:

答案 0 :(得分:17)

实际上,我自己找到了答案,但保留了一个问题,因为我可以想象人们会在stackoverflow上定期搜索这些信息;

有关运营商上传者的官方说明,请访问:http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

主要是,我正在寻找的是:

  • Equal,for'='compare:Equal(a:type; b:type):Boolean;
  • NotEqual,for'<>'比较:NotEqual(a:type; b:type):Boolean;
  • GreaterThan,for'>'比较:GreaterThan(a:type; b:type)布尔值;
  • GreaterThanOrEqual,对于'> ='比较:GreaterThanOrEqual(a:type; b:type):resultType;
  • LessThan,for'<'比较:LessThan(a:type; b:type):resultType;
  • LessThanOrEqual,对于'< ='比较:LessThanOrEqual(a:type; b:type):resultType;

答案 1 :(得分:10)

我只是将我的notes online会话放在可空类型上,并在一些会议期间给出了运算符重载。

它现在包含一个运算符表,名称和工作/不起作用的表。 WordPress最初使该表格格式不正确,但我设法恢复了它。

您也可以下载full set of slides and source code demos

简而言之:

  • 文档(甚至是DocWiki)不完整,请注意可靠
  • 您不能重载按位运算符,因为编译器不支持BitwiseNot。您必须重载逻辑运算符。
  • 适用时成对的重载运算符
  • 了解现有运营商
  • 实施隐式运算符时要非常小心

希望这会对你有所帮助。如果您需要更多信息,请告诉我:我已经完成了很多与运算符重载相关的生产工作。

- 的Jeroen