DELPHI8操作符重载的例子

豆豆网   技术应用频道   2007年03月20日  【字号: 收藏本文

本文详细介绍DELPHI8操作符重载的例子

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.

责编:豆豆技术应用

正在加载评论...