Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在类运算符的上下文中,继承意味着什么_Delphi_Operator Overloading_Delphi Xe2 - Fatal编程技术网

Delphi 在类运算符的上下文中,继承意味着什么

Delphi 在类运算符的上下文中,继承意味着什么,delphi,operator-overloading,delphi-xe2,Delphi,Operator Overloading,Delphi Xe2,如果我在界面中键入我的记录定义,然后按ctrl+alt+C,Delphi将填写以下存根 class operator P<T>.GreaterThan(a, b: P<T>): Boolean; begin inherited; <<-- ??? end; 实施: class operator P<T>.Implicit(a: pointer): P<T>; begin <<--- no

如果我在
界面中键入我的记录定义,然后按ctrl+alt+C,Delphi将填写以下存根

  class operator P<T>.GreaterThan(a, b: P<T>): Boolean;
  begin
    inherited;   <<-- ???

  end;
实施:

  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;
类操作符P.Implicit(a:指针):P;

begin在这个上下文中,
继承的
没有任何意义,因为记录不能被继承。编译器忽略它,不输出任何代码。代码完成似乎变得混乱起来。

在这种情况下,
继承的
没有任何意义,因为记录无法继承。编译器忽略它,不输出任何代码。看起来代码完成越来越混乱。

好吧,我认为这与同一
类运算符的多个重载版本有关。好吧,我认为这与同一
类运算符的多个重载版本有关。
  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;