Pau*_*-AG 1 delphi pascal freepascal
FreePascal,Delphi模式。经过一些实验,我发现该代码已编译,FPC告诉我类过程必须是“静态的”。但是我的问题是:那为什么运算符Equal不需要“静态”并且可以正常编译?我也无法理解“类”过程和“类”与“静态”有什么区别(例如,在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;
Run Code Online (Sandbox Code Playgroud)
PS。我设置“ delphi”标签的原因是:1)它是在delphi模式下编写的2)因为我找到了与Delphi相同的文档:关于类和静态关键字。
与您声明的相反,非静态类方法确实具有对作为参数传递的类的引用。这是一个名为的隐式参数Self。
对于与类相对的记录上的类方法,由于没有继承,因此此Self参数没有任何作用,因此永远不会传递。因此,记录上的所有类方法都必须是静态的。
类运算符隐式地是一个静态方法,因此您无需声明它。换句话说,operator暗含static。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |