运算符重载
一、可以重载的符号
1.比较常用的运算符
- 算符运算符:+ - * / %
- 复合算数运算符: += -= *= 类似
- << 和 >>
- [] ++ – delete new ()
所有的符号为:+ - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >> <<= >>= == != <= >= && || ++ -- , ->* -> () [] new new[] delete delete[]
二、特别重点的符号,只能以成员函数的形式进行重载
- 箭头运算符->、
- 下标运算符[ ]、
- 函数调用运算符( )
- 赋值运算符=
三、成员函数重载与非成员函数重载的区别
- 成员函数是一个参数,另一个用默认的this
- 非成员: 需要两个参数 + friend
四、总体规则
-
重载不能改变运算符的优先级和结合性
-
重载不会改变运算符的用法,原有有几个操作数、操作数在左边还是在右边,这些都不会改变。例如~号右边只有一个操作数,+号总是出现在两个操作数之间,重载后也必须如此
-
运算符重载函数不能有默认的参数,否则就改变了运算符操作数的个数,这显然是错误的。
-
将运算符重载函数作为类的成员函数时,二元运算符的参数只有一个,一元运算符不需要参数。之所以少一个参数,是因为这个参数是隐含的。
2850

被折叠的 条评论
为什么被折叠?



