如果我在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
是什么意思?
红利问题
德尔福遵循什么规则以及需要注意什么?
答案 0 :(得分:4)
在这种情况下,inherited
没有任何意义,因为记录不能被继承。编译器忽略它并且不输出代码。看起来代码完成变得混乱。