如果我在 中输入我的记录定义,interface
然后按ctrl + alt + C Delphi 填写以下存根。
class operator P<T>.GreaterThan(a, b: P<T>): Boolean;
begin
inherited; <<-- ???
end;
你不能从记录中继承,inherited
在这种情况下是什么意思?
Delphi 甚至不一致:
界面:
class operator Implicit(a: pointer): P<T>; inline;
class operator Implicit(a: P<T>): pointer; inline;
class operator Implicit(Cell: TCell<T>): P<T>; inline;
class operator Implicit(P: P<T>): TCell<T>; inline;
执行:
class operator P<T>.Implicit(a: pointer): P<T>;
begin <<--- nothing
end;
class operator P<T>.Implicit(a: P<T>): pointer;
begin
inherited; <<-- now you see it...
end;
class operator P<T>.Implicit(Cell: TCell<T>): P<T>;
begin <<-- now you don't
end;
class operator P<T>.Implicit(P: P<T>): TCell<T>;
begin
end;
我怀疑 Delphi 将一个运算符作为“前导”(没有继承)并在例程中遵循该实现,inherited
如果它决定参数是兼容的。
在这种情况下是什么inherited
意思?
奖励问题
Delphi 遵循哪些规则,需要注意哪些陷阱?