运算符重载遵循如下规则
- 除类属关系运算符”.”、成员指针运算符”.*”、作用域运算符”::”、sizeof运算符和三目运算符”?:”以外,其他运算符都可以重载。
- 重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。
运算符重载的方式
重载为类的成员函数和重载为类的非成员函数。非成员函数通常是友元。
成员函数运算符
语法形式
1 | <函数类型> operator <运算符>(<参数列表>) |
代码示例
1 | #include <iostream> |
友元函数运算符
语法形式
1 | friend <函数类型> operator <运算符>(<参数列表>) |
代码示例
1 | #include <iostream> |
注意:
一般双目运算符重载用友元实现,但是以下一些双目运算符不能重载为类的友元函数:=、()、[]、->
思考
c++ 函数符号重载 返回类型是否为引用?