运算符重载其实是另一种形式的函数调用,这种形式可以给我们类对象赋予各种类似于基本数据类型的运算能力。
C语言中也有运算符的重载,比如说 * 和 &,如果不去思考重载实现的细节与规则,那么这一部分的学习会相当的通俗易懂。但是,看完下边这个表的时候你有没有想过为什么?
图1:不同运算符的重载函数类型
这里我们先聊一聊重载运算符的基本规则:
- 重载运算符的功能应参照该运算符作用于基本类型数据时候时所实现的功能
- 用于类对象的运算符一般必须重载,”=“和”&“不必用户重载,系统默认提供
- 重载不能改变运算符操作数,重载运算符的函数不能有默认的参数
- 重载后的运算符必须由至少一个参数是用户自定义的类型
- 重载不能改变运算符的优先级和结核性
不能重载的运算符有:
图2:不能重载的运算符
然后咱们回到图1:
为什么运算符的重载要采用这么多不同的类型函数?
1,运算符的操作会修改类对象的属性时,必须采用成员函数