Why isn't operator overloading available for classes in Delphi?

前端 未结 3 560
情歌与酒
情歌与酒 2021-01-04 09:06

I\'ve always wondered about this for a bit, but why is operator overloading not available for classes in Delphi?

I remember reading an answer once while on the run,

相关标签:
3条回答
  • 2021-01-04 09:09

    Close. It's because objects are reference types and the memory is managed manually. So if you said myResult := myObject1 + myObject2 + myObject3;, you'd have to create an intermediate object somewhere in there, and there's no code to free it, so you get memory leaks.

    0 讨论(0)
  • 2021-01-04 09:14

    You can have operator overloading for classes, but only for the NextGen compiler where classes use ARC.
    See: http://blog.marcocantu.com/blog/class_operators_delphi.html

    This was introduced in XE5, see: List of Delphi language features and version in which they were introduced/deprecated

    0 讨论(0)
  • 2021-01-04 09:14

    Mason Wheeler says that it's impossible because intermediate object management.

    But according to Embarcadero documentation, class operators where possible with Delphi 2009.

    RAD Studio 2009 - Operator Overloading New Delphi language features since Delphi 7

    0 讨论(0)
提交回复
热议问题