• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi-新语法介绍之运算符重载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

技术交流,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,今天就说到这里.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi简介-山寨IT发布时间:2022-07-18
下一篇:
Delphi的绘图功能[3]-矩形类图形发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap