继承在类操作符的上下文中意味着什么

时间:2013-10-08 03:53:22

标签: delphi operator-overloading delphi-xe2

如果我在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是什么意思?

红利问题
德尔福遵循什么规则以及需要注意什么?

1 个答案:

答案 0 :(得分:4)

在这种情况下,inherited没有任何意义,因为记录不能被继承。编译器忽略它并且不输出代码。看起来代码完成变得混乱。