百度:
?=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载。如果允许第一操作数不是同类对象,而是其他数据类型,则只能作为非成员函数重载(如输入输出流运算符>>和<<就是这样的情况)。
重载双目运算符可以用友元或者成员函数,但是两者有区别
例如用成员函数重载了 + 之后(假设赋值运算符 = 已经被重载)
ob = ob + 100是被支持的,而ob = 100 + ob就是不被允许的
这种情况下就要使用友元函数来对运算符重载以避免不必要的麻烦
C++ 操作符重载 类成员 非类成员友元 左值 右值