运算符重载
在C++中,运算符的重载可以看作一种特殊的函数。一元运算符有一个参数;二元运算符有两个参数。对于二元运算符而言,第一个参数作为运算符的左值,第二个参数作为运算符的右值。
如果运算符为成员函数(方法),其第一个参数默认为*this
,此时一元运算符不需要参数,二元运算符需要一个参数。
运算符重载应当作为类成员还是非成员?
- 赋值
=
,下标[]
,调用()
和成员访问箭头->
的运算符必须要定义为类成员 - 复合赋值
+=
,-=
等常理应当定义为类成员 - 转变对象状态的运算符或者和类型绑定的运算符,如递增
++
,递减--
应当定义为类成员 - 对称运算符——左右值可互换的运算符,如算术运算符,相等运算符,位运算符,应当定义为非成员。
网友评论