一.操作符函数
•在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对一个全局或成员函数的调用,该全局或成员函数被称为操作符函数
•通过定义操作符函数,可以实现针对自定义类型的运算法则,并使之与内置类型一样参与各种表达式
双目操作符表达式
一.成员函数
•形如L#R的双目操作符表达式,将被编译器解释为
–L.operator# (R) 左操作数是调用对象,右操作数是参数对象
–a - b + c a.operator- (b).operator+ (c)
–a - (b + c) a.operator- (b.operator+ (c))
–a - b * c a.opertor- (b.operator* (c))
二.全局函数
•形如L#R的双目操作符表达式,将被编译器解释为
–::operator# (L, R) 左操作数是第一参数,右操作数是第二参数
–a - b + c ::operator+ (::operator- (a, b), c)
–a - (b + c) ::operator- (a, ::operator+ (b, c))
–a - b * c ::operator- (a, ::operator* (b, c))
单目操作符表达式
一.成员函数
•形如#O或O#的单目操作符表达式,将被编译器解释为
–O.operator# () 唯一的操作数是调用对象
– -a a.operator- ()
– ++a a.operator++ ()
– a++ a.operator++ (0)
二.全局函数
•形如#O或O#的单目操作符表达式,将被编译器解释为
–::operator# (O) 唯一的操作数是参数对象
– -a ::operator- (a)
– ++a operator++ (a)
– a++ operator++ (a, 0)