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