注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

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

2012-11-11 23:16:07|  分类: delphi xe2 |  标签: |举报 |字号 订阅

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

01 THuangJacky = record
02     A,B,C:Integer;
03     //+
04     class operator Add(a, b: THuangJacky): THuangJacky;
05     //=
06     class operator Equal(a,b: THuangJacky):Boolean;
07 end;
08 var
09     Form1: TForm1;
10 implementation
11 {$R *.dfm}
12 { TH }
13 class operator THuangJacky.Add(a, b: THuangJacky): THuangJacky;
14 begin
15     Result.A:=a.A + a.A;
16     Result.B:=a.B + b.B;
17     Result.C:=a.C + b.C;
18 end;
19 class operator THuangJacky.Equal(a, b: THuangJacky): Boolean;
20 begin
21     if (a.A=b.A)and(a.B=b.B)and(a.C=b.C) then
22         Result:=True
23     else
24         Result:=False;
25 end;
26 procedure TForm1.btn1Click(Sender: TObject);
27 var
28     a,b,c:THuangJacky;
29 begin
30     a.A:=5;a.B:=6;a.C:=7;
31     b.A:=2;b.B:=3;b.C:=4;
32     //这就是好处
33     c:=a+b;
34     ShowMessageFmt('%D,%D,%D',[c.A,c.B,c.C]);
35     if not (a=b) then
36         ShowMessage('not equal');
37 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
  评论这张
 
阅读(136)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017