区别
1.使用成员函数来实现运算符重载时,少写一个参数,因为第一个参数就是this指针
成员函数:
非成员函数:
俩种方式的选择
1.一般情况下,单目运算符重载,使用成员函数重载更方便
2,一般情况下,双目运算符重载,使用友元函数更直观
方便实现 a+b // a.operator+(b)
和 b+a //b.operator+(a)
相同效果,成员函数无法实现
特殊情况
-
= () [] -> 不能重载位友元函数!!!
(否则可能和c++其他规则冲突),只能使用成员函数形式进行重载 -
如果运算符的第一个操作数要求使用隐式类型转换,则必须位友元函数(成员函数方式的第一个参数是this指针)
注意
同一个运算符重载,不能同时使用俩种方式来重载,会导致编译器不知道选择哪一个(二义性)