delphi8:DELPHI8操作符重载的例子

unit WinForm;

erface

uses
  .Drawing, .Collections, .ComponentModel,
  .Windows.Forms, .Data;

type
  TWinForm = (.Windows.Forms.Form)
  {$REGION 'Designer Managed Code'}
  strict private
    /// <summary>
    /// Required designer variable.
    /// </summary>
    Components: .ComponentModel.Container;
    Button1: .Windows.Forms.Button;
    /// <summary>
    /// Required method for Designer support - do not mody
    /// the contents of this method with the code editor.
    /// </summary>
    procedure InitializeComponent;
    procedure Button1_Click(sender: .Object; e: .EventArgs);
  {$ENDREGION}
  strict protected
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    procedure Dispose(Disposing: Boolean); override;
  private
    { Private Declarations }
  public
    constructor Create;
  end;

  //写成类也可以,这里我用了记录由于记录是值类型省去了创建例子麻烦
  TClassTest=record
  public
    FA:Integer;
    //重载了“+”操作符
     operator add(A,B:TClassTest):TClassTest;
  end;

  [assembly: RuntimeRequiredAttribute(TypeOf(TWinForm))]

implementation

{$REGION 'Windows Form Designer generated code'}
/// <summary>
/// Required method for Designer support -- do not mody
/// the contents of this method with the code editor.
/// </summary>
procedure TWinForm.InitializeComponent;
begin
  Self.Button1 := .Windows.Forms.Button.Create;
  Self.SuspendLayout;
  //
  // Button1
  //
  Self.Button1.Location := .Drawing.Po.Create(96, 88);
  Self.Button1.Name := 'Button1';
  Self.Button1.Size := .Drawing.Size.Create(392, 112);
  Self.Button1.TabIndex := 0;
  Self.Button1.Text := 'Button1';
  Include(Self.Button1.Click, Self.Button1_Click);
  //
  // TWinForm
  //
  Self.AutoScaleBaseSize := .Drawing.Size.Create(6, 14);
  Self.ClientSize := .Drawing.Size.Create(560, 357);
  Self.Controls.Add(Self.Button1);
  Self.Name := 'TWinForm';
  Self.Text := 'WinForm';
  Self.ResumeLayout(False);
end;
{$ENDREGION}

procedure TWinForm.Dispose(Disposing: Boolean);
begin
   Disposing then
  begin
     Components <> nil then
      Components.Dispose;
  end;
  inherited Dispose(Disposing);
end;

constructor TWinForm.Create;
begin
  inherited Create;
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent;
  //
  // TODO: Add any constructor code after InitializeComponent call
  //
end;

procedure TWinForm.Button1_Click(sender: .Object; e: .EventArgs);
var
  A,B,C:TClassTest;
begin
  A.FA :=1;
  B.FA :=2;
  C:=A+B; //两个结构(或者类)用+操作在DELHI8以前是不可想象
  system.Windows.Forms.MessageBox.Show(.Convert.(C.FA) );
end;

{ TClassTest }

//重载“+”操作符实现
operator TClassTest.add(A, B: TClassTest): TClassTest;
begin
  Result.FA:=A.FA + B.FA;
end;

end.
Tags:  重载和重写的区别 delphi8

延伸阅读

最新评论

发表评论