gpt4 book ai didi

delphi - 为什么在一种情况下需要静态,而在另一种情况下不需要静态?

转载 作者:行者123 更新时间:2023-12-02 20:34:58 25 4
gpt4 key购买 nike

FreePascal,Delphi 模式。经过一些实验,我发现这段代码已编译,FPC 告诉我类过程必须是“静态”的。但我的问题是:那为什么运算符 Equal 不需要“static”并且编译正常?!另外,我无法理解“class”过程和“class”与“static”有什么区别(例如,在Python中的classmethod中,你得到参数 - 对类的引用,在staticmethod - 你没有这样的论点)。

  type TPos = record
FLine: Word;
FPos: Word;

class procedure Init(out a: TPos); static;
class operator Equal(a, b: TPos): Boolean;
end;

PS。我设置“delphi”标签是因为:1)它是用delphi模式编写的2)因为我找到了与Delphi相同的文档:关于类和静态关键字。

最佳答案

与您所说的相反,非静态类方法确实具有对作为参数传递的类的引用。这是一个名为 Self 的隐式参数。

对于记录上的类方法(而不是类),由于没有继承,因此此 Self 参数没有任何作用,因此永远不会传递它。因此记录上的所有类方法都必须是静态的。

类运算符隐式是静态方法,因此您无需声明。换句话说,operator 隐含着static

关于delphi - 为什么在一种情况下需要静态,而在另一种情况下不需要静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com