为什么Delphi中的类没有运算符重载?

时间:2010-01-19 01:27:36

标签: delphi class operator-overloading

我总是想知道这一点,但为什么Delphi中的类不能使用运算符重载?

我记得在跑步时读了一次答案,它说它会与某些东西发生冲突,但我记不起来了。据我所知,只有隐式运算符可能会导致一些问题,因为类存储在堆上并且赋值实际上是堆地址的副本(基本上是复制指针)。

3 个答案:

答案 0 :(得分:11)

关闭。这是因为对象是引用类型,并且手动管理内存。所以如果你说myResult := myObject1 + myObject2 + myObject3;,你必须在那里的某个地方创建一个中间对象,并且没有代码可以释放它,所以你得到了内存泄漏。

答案 1 :(得分:1)

您可以对类进行运算符重载,但仅适用于类使用ARC的NextGen编译器 请参阅:__getitem__()

这是在XE5中引入的,请参阅:http://blog.marcocantu.com/blog/class_operators_delphi.html

答案 2 :(得分:0)

Mason Wheeler说这是不可能的,因为中间对象管理。

但根据Embarcadero文档,尽可能使用Delphi 2009进行类操作。

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