您的位置:首页 > 其它

操作符函数及重载(1)

2017-08-04 14:50 267 查看

一.操作符函数

•在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对一个全局或成员函数的调用,该全局或成员函数被称为操作符函数

•通过定义操作符函数,可以实现针对自定义类型的运算法则,并使之与内置类型一样参与各种表达式

双目操作符表达式

一.成员函数

•形如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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息