zoukankan      html  css  js  c++  java
  • Delphi 新语法介绍之运算符重载

    技术交流,DH讲解

    运算符重载一直是个争议的话题,.其实运算符重载就是方便我们而已,不用不会死人,用了方便点儿而已.D7之后的版本也支持运算符重载.我们来看个例子:
    如果我们想2个结构体可以相加,比如说 a,b:TPoint;C:=a+b;是吧,多美好的事情呀.


    THuangJacky = record
    	A,B,C:Integer;
    	//+
    	class operator Add(a, b: THuangJacky): THuangJacky;
    	//=
    	class operator Equal(a,b: THuangJacky):Boolean;
    end;
    var
    	Form1: TForm1;
    implementation
    {$R *.dfm}
    { TH }
    class operator THuangJacky.Add(a, b: THuangJacky): THuangJacky;
    begin
    	Result.A:=a.A + a.A;
    	Result.B:=a.B + b.B;
    	Result.C:=a.C + b.C;
    end;
    class operator THuangJacky.Equal(a, b: THuangJacky): Boolean;
    begin
    	if (a.A=b.A)and(a.B=b.B)and(a.C=b.C) then
    		Result:=True
    	else
    		Result:=False;
    end;
    procedure TForm1.btn1Click(Sender: TObject);
    var
    	a,b,c:THuangJacky;
    begin
    	a.A:=5;a.B:=6;a.C:=7;
    	b.A:=2;b.B:=3;b.C:=4;
    	//这就是好处
    	c:=a+b;
    	ShowMessageFmt('%D,%D,%D',[c.A,c.B,c.C]);
    	if not (a=b) then
    		ShowMessage('not equal');
    end;
    
    我们这里的结构体就可以直接+ 和 = 判断了,方便了那些搞算法的人.哈哈.下面附上所有的运算符:

    Implicit

    Conversion

    Implicit(a : type) : resultType; (封箱)

    implicit typecast

    Explicit

    Conversion

    Explicit(a: type) : resultType; (拆箱)

    explicit typecast

    Negative

    Unary

    Negative(a: type) : resultType;

    -

    Positive

    Unary

    Positive(a: type): resultType;

    +

    Inc

    Unary

    Inc(a: type) : resultType;

    Inc

    Dec

    Unary

    Dec(a: type): resultType

    Dec

    LogicalNot

    Unary

    LogicalNot(a: type): resultType;

    not

    BitwiseNot

    Unary

    BitwiseNot(a: type): resultType;

    not

    Trunc

    Unary

    Trunc(a: type): resultType;

    Trunc

    Round

    Unary

    Round(a: type): resultType;

    Round

    Equal

    Comparison

    Equal(a: type; b: type) : Boolean;

    =

    NotEqual

    Comparison

    NotEqual(a: type; b: type): Boolean;

    <>

    GreaterThan

    Comparison

    GreaterThan(a: type; b: type) Boolean;

    >

    GreaterThanOrEqual

    Comparison

    GreaterThanOrEqual(a: type; b: type): resultType;

    >=

    LessThan

    Comparison

    LessThan(a: type; b: type): resultType;

    <

    LessThanOrEqual

    Comparison

    LessThanOrEqual(a: type; b: type): resultType;

    <=

    Add

    Binary

    Add(a: type; b: type): resultType;

    +

    Subtract

    Binary

    Subtract(a: type; b: type) : resultType;

    -

    Multiply

    Binary

    Multiply(a: type; b: type) : resultType;

    *

    Divide

    Binary

    Divide(a: type; b: type) : resultType;

    /

    IntDivide

    Binary

    IntDivide(a: type; b: type): resultType;

    div

    Modulus

    Binary

    Modulus(a: type; b: type): resultType;

    mod

    LeftShift

    Binary

    LeftShift(a: type; b: type): resultType;

    shl

    RightShift

    Binary

    RightShift(a: type; b: type): resultType;

    shr

    LogicalAnd

    Binary

    LogicalAnd(a: type; b: type): resultType;

    and

    LogicalOr

    Binary

    LogicalOr(a: type; b: type): resultType;

    or

    LogicalXor

    Binary

    LogicalXor(a: type; b: type): resultType;

    xor

    BitwiseAnd

    Binary

    BitwiseAnd(a: type; b: type): resultType;

    and

    BitwiseOr

    Binary

    BitwiseOr(a: type; b: type): resultType;

    or

    BitwiseXor

    Binary

    BitwiseXor(a: type; b: type): resultType;

    xor

    我是DH,今天就说到这里.

  • 相关阅读:
    php学习笔记之一维数组
    MVC开发人员必备的五大工具
    ASP.NET MVC 3和Razor中的@helper
    Oracle表空间不足ORA-01654
    oracle创建计划任务
    淘宝下单高并发解决方案
    网站集成QQ登录功能
    jquery的一个模板引擎-zt
    Asp.net gzip压缩的启用
    Windows7下面手把手教你安装Django
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1620566.html
Copyright © 2011-2022 走看看