运算符重载的规则如下:
1、C++中的运算符除了少数几个之外,全部可以重载,而且只能重载C++中已经有的运算符。
2、重载之后运算符的优先级和结合性都不会改变
3、运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造,一般来讲,重载的功能应当与原有功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。
注意:不能重载的运算符只有5个,它们是类属关系运算符“.”、成员指针运算符“.*”、作用域分辨符“::”、sizeof运算符和三木运算符“?:”。前面两个运算符保证了C++中访问成员功能的含义不被改变。作用域分辨符和sizeof运算符的操作数是类型。
4、 运算符的重载形式有两种,重载为类的成员函数和重载为类的友元函数。
- 运算符重载为类的成员函数的一般语法形式为:
函数类型 operator 运算符(形参表)
{
函数体
}
- 运算符重载为类的友元函数,可以在类中声明友元函数的原型,在类外实现,也可以在类体中实现