2

如果我在 中输入我的记录定义,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 遵循哪些规则,需要注意哪些陷阱?

4

1 回答 1

4

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

于 2013-10-08T04:35:19.377 回答