DELPHI8操作符重载的例子

原创 2004年03月04日 10:04:00

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.

所有C++操作符重载的例子

1.[ ]操作符重载 C++语言规定:“[ ]”只能作为类的成员函数进行重载。 “[ ]”是C++中的下标运算符,对于数组或指针来说,下表运算的语义是确定的,不能进行重载。因此,如果看到一个运算...
  • chijianxingfeng
  • chijianxingfeng
  • 2013年04月30日 13:04
  • 2359

C++运算符重载讲解与经典实例

C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如:  class complex  {   public:    complex...
  • MyLinChi
  • MyLinChi
  • 2016年11月01日 19:51
  • 1817

C++: 重载前缀运算符与重载后缀运算符(以++为例)

C++: 重载前缀运算符与重载后缀运算符(以++为例)标签: C++ 重载运算符 前缀运算符 后缀运算符by 小威威在C++中如何区分重载前缀运算符与重载后缀运算符呢?不难发现,重载后缀运算符带有形...
  • linwh8
  • linwh8
  • 2016年02月21日 11:34
  • 1995

C++ 操作符重载

  • 2013年05月30日 01:47
  • 1KB
  • 下载

带模板操作符重载出现的LINK错误修改方法

  • 2017年08月08日 09:24
  • 28KB
  • 下载

c++课件(5)操作符重载1

  • 2017年07月29日 14:02
  • 553KB
  • 下载

操作符重载

  • 2012年11月01日 13:02
  • 756B
  • 下载

快速排序算法测试,操作符重载,模板应用

  • 2014年08月13日 16:57
  • 7KB
  • 下载

C++操作符重载

  • 2012年11月18日 21:03
  • 1.98MB
  • 下载

c++课件之操作符重载

  • 2014年10月17日 17:51
  • 612KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DELPHI8操作符重载的例子
举报原因:
原因补充:

(最多只允许输入30个字)