文件名称:认识运算符重载-京东应用架构设计
文件大小:7.56MB
文件格式:PDF
更新时间:2024-06-30 04:57:24
Delphi 2010 语法
第九章 运算符重载 先来了解两个概念:操作符与操作数。操作符是用于完成某种功能的符号,如加号 (+)、乘号(*)等,也称为运算符;操作数指操作符操作的对象,如表达式 4+5中的 4、5就 是操作数。应当注意:某些操作符在使用时与函数非常相似,如 Round、Inc、Addr等。 再来回顾一下函数的定义,所谓函数是能够完成一定功能并返回一个值的代码的集 合。按照这个定义,我们常见的一些运算符如也可以被划到函数之列。以加号为例,它的 功能是将两个操作数相加,并将结果作为返回值返回。 继续回顾一下函数的重载,所谓函数的重载是指为同一个函数名称定义多种不同的实 现,调用时系统会根据特征集调用匹配的版本。 停止回顾。现在我们来对运算符重载作一个大概的定义。运算符重载是指对运算符进 行重载使得其能够按我们定义的方式对本来不能运算的操作数进行运算。举例来说,加号 (+)本来只能用于一些简单类型而不能用于 TObject对象(即两个 TObject 类型的对象不能 进行相加),但我们可以对加号(+)进行重载使得它可以用于此类对象。 9.1 认识运算符重载 Delphi中所有的运算符都对应着一个函数名(每个运算符都是一个函数),加号(+) 的名称是 Add,减号(-)的名称是 Subtract。当我们在源代码中调用这些运算符时实际上是 在变相的调用这些函数。如表达式 2+3相当于 Add(2,3)。但在源代码中我们只能使用这些 运算符的符号而不能使用函数名。 运算符的重载实际上是在重载这些函数。但与一般函数不同,Delphi2010目前只允许 重载记录类型的操作符。同时,Delphi也对可重载的操作符作了一些限制,使得只有一部 分运算符能够被重载。下表列出了这些运算符: 操作符名称 种类 对应的函数原型 对应的符号 Implicit 转换 操作符 Implicit(a:type):resultType; 隐匿转型 Explicit Explicit(a:type):resultType; 显式转型 Negative 一元 操作符 Negative(a:type):resultType; - Positive Positive(a:type):resultType; + Inc Inc(a:type):resultType; Inc Dec Dec(a:type):resultType Dec LogicalNot LogicalNot(a:type):resultType; not BitwiseNot BitwiseNot(a:type):resultType; not Trunc Trunc(a:type):resultType; Trunc