DELPHI8操作符重载的例子

    技术2022-05-11  111

    unit WinForm;

    interface

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

    type  TWinForm = class(System.Windows.Forms.Form)  {$REGION 'Designer Managed Code'}  strict private    /// <summary>    /// Required designer variable.    /// </summary>    Components: System.ComponentModel.Container;    Button1: System.Windows.Forms.Button;    /// <summary>    /// Required method for Designer support - do not modify    /// the contents of this method with the code editor.    /// </summary>    procedure InitializeComponent;    procedure Button1_Click(sender: System.Object; e: System.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;    //重载了“+”操作符    class 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 modify/// the contents of this method with the code editor./// </summary>procedure TWinForm.InitializeComponent;begin  Self.Button1 := System.Windows.Forms.Button.Create;  Self.SuspendLayout;  //   // Button1  //   Self.Button1.Location := System.Drawing.Point.Create(96, 88);  Self.Button1.Name := 'Button1';  Self.Button1.Size := System.Drawing.Size.Create(392, 112);  Self.Button1.TabIndex := 0;  Self.Button1.Text := 'Button1';  Include(Self.Button1.Click, Self.Button1_Click);  //   // TWinForm  //   Self.AutoScaleBaseSize := System.Drawing.Size.Create(6, 14);  Self.ClientSize := System.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  if Disposing then  begin    if 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: System.Object; e: System.EventArgs);var  A,B,C:TClassTest;begin  A.FA :=1;  B.FA :=2;  C:=A+B; //两个结构(或者类)用+操作,在DELHI8以前是不可想象的  system.Windows.Forms.MessageBox.Show(System.Convert.ToString(C.FA) );end;

    { TClassTest }

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

    end.


    最新回复(0)