【问题标题】:What kinds of operator overloads does Delphi support?Delphi 支持哪些类型的运算符重载?
【发布时间】:2010-12-07 22:47:51
【问题描述】:

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

  • 添加(左,右:类型):类型(用于“+”运算符)
  • 减(左,右:类型):类型(用于“-”运算符)
  • 乘法(左,右:类型):类型(用于“*”运算符)
  • 除法(左,右:类型):类型(用于“/”运算符)
  • 隐式(aValue:Type):AnotherType 和
  • Implicit(aValue: AnotherType):类型(对于隐式赋值:a := b)
  • 显式(aValue: Type):AnotherType 和
  • Explicit(aValue: AnotherType):类型(对于“强制转换”的显式分配:a := Type(b)

但是,我不知道 '='、''、'>' 和 '>=' 运算符的名称。这些是否存在,我可以从哪个 Delphi 版本中使用这些?

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

【问题讨论】:

    标签: delphi operator-overloading


    【解决方案1】:

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

    关于运算符重载的官方描述可以在这里找到:http://docwiki.embarcadero.com/RADStudio/en/Operator_Overloading_(Delphi)

    主要是我要找的名字是:

    • 相等,用于 '=' 比较:Equal(a: type; b: type) : Boolean;
    • NotEqual,用于 '' 比较:NotEqual(a: type; b: type): Boolean;
    • GreaterThan,用于 '>' 比较:GreaterThan(a: type; b: type) Boolean;
    • GreaterThanOrEqual,用于 '>=' 比较:GreaterThanOrEqual(a: type; b: type): resultType;
    • LessThan,用于 '
    • LessThanOrEqual,用于“

    【讨论】:

    • 页面已移动here
    【解决方案2】:

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

    它现在包含一个操作员表、名称和有效/无效的操作。 WordPress 最初将该表的格式错误,但我设法恢复了它。

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

    简而言之:

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

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

    --杰罗恩

    【讨论】:

    • 谢谢——既然你提到了,我以前看过你的幻灯片。总而言之,一个很好的概述。遗憾的是 Delphi 社区必须记录这一点;我本来希望 CodeGear/Embarcadero 提供更详尽的文档。
    • 我需要先找时间把我的大量资料放到网上,然后更新正确的 Wiki。
    • 按位不是AnInteger XOR -1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2012-02-11
    相关资源
    最近更新 更多