Delphi中的操作符重载

6

在 Delphi 中,是否可以为类重载运算符?我曾经读到过只有记录才能这样做,但我找到了一些信息,就像下面的代码一样,类也可以:

type
   TMyClass = class
     class operator Implicit(a: Integer): TMyClass;
   end;


class operator TMyClass.Implicit(a: Integer): TMyClass;
begin
   // ...
end;

这是从地址 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/operatoroverloads_xml.html 修改而来。
但是,在 Delphi XE 中使用时,我遇到了以下错误: 需要 PROCEDURE、FUNCTION、PROPERTY 或 VAR(E2123) 我想创建一个简单的矩阵操作类,并希望能够在类内部使用运算符重载。这是非常期望的机会。
谢谢, Artik
1个回答

10

在一些版本的编译器中,类的运算符重载是可用的。它适用于 .net 和 iOS 编译器。但对于 Windows 和 Mac,不受支持。

iOS 编译器可以支持这个功能,因为它使用了 ARC 来管理类实例的生命周期。如果桌面编译器也采用 ARC 技术,那么您可以期望支持运算符重载的功能。

Marco 在他的博客中写到了这个问题:http://blog.marcocantu.com/blog/class_operators_delphi.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接