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

Pat*_*kvL 16 delphi operator-overloading

我想知道什么样的操作符重载是可能的(以及什么版本的Delphi)?感谢Hallvard对运算符重载的精彩描述,我知道:

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

但是,我不知道的是'=','<=','<','<>','>'和'> ='运算符的名称.这些存在,我可以使用Delphi版本吗?

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

Pat*_*kvL 17

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

关于操作员上传者的官方说明可以在这里找到:http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

主要是我要找的那些名字:

  • 等于'='比较:等于(a:type; b:type):Boolean;
  • NotEqual,用于'<>'比较:NotEqual(a:type; b:type):Boolean;
  • GreaterThan,'>'比较: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;


Jer*_*ers 10

我只是把我的笔记放在一个关于可空类型的会话上,我在几次会议期间给出了运算符重载.

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

您还可以下载完整的幻灯片和源代码演示.

简而言之:

  • 文档(甚至DocWiki)不完整,请注意可靠
  • 您不能重载bitwise not运算符,因为编译器不支持BitwiseNot.您必须重载逻辑非运算符.
  • 在适用的情况下成对重载运算符
  • 注意现有的运营商
  • 实现隐式运算符时要非常小心

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

--jeroen