5.3.4 运算符重载
另一个与记录相关的 Object Pascal
语言特性是运算符重载,即在数据类型上自己定义标准操作(加法、乘法、比较等)的能力。基本思想是你可以实现一个加法运算符(一个特殊的 Add 方法),然后使用 + 符号来调用它。要定义运算符,你需要使用 class operator
关键字的组合。
注解:通过重用现有的保留字,语言设计者成功地做到了对现有代码没有产生影响。他们最近在关键字组合中经常这样做,比如
strict private
、class operator
和class var
。
这里的 class
与类方法有关,这是我们将在更后面的章节中要探讨的概念(在第12章)。在指令之后,你写出运算符的名称,例如 Add:
type
TPointRecord = record
public
class operator Add(A, B: TPointRecord): TPointRecord;
然后使用 + 符号调用 Add
运算符,如你所期望:
var
A, B, C: TPointRecord;
begin
C := A + B;
那么有哪些可用的运算符呢?基本上是语言的整个运算符集,因为你不能定义全新的运算符:
- 强制类型转换运算符:
Implicit
和Explicit
- 一元运算符:Positive, Negative, Inc, Dec, LogicalNot, BitwiseNot,
Trunc, 和 Round - 比较运算符:Equal, NotEqual, GreaterThan, GraterThanOrEqual, LessThan, 和LessThenOrEqual
- 二元运算符:Add, Subtract, Multiply, Divide, IntDivide, Mod