(1)对双目运算符而言,成员运算符重载函数参数表中含有一个参数,而友元运算符重载函数参数表中含有两个参数;对单目运算符而言,成员运算符重载函数参数表中没有参数,而友元运算符重载函数参数表中含有两个参数。
(2)双目运算符一般可以被重载为友元运算符重载函数或成员运算符重载函数,但有一种情况,必须使用友元函数:
例如,如果将一个复数与一个整数相加,可用成员运算符函数重载 “+”:
Complex operator+(int a){
return (real+a,imag);
}
若 com 和 com1 是类 Complex 的对象,则以下语句是正确的:
com1=com+100;
这条语句被 C++ 编译系统解释为:
com1=com.operator+(100);
由于对象 com 是运算符 “+” 的左操作数,所以它可以调用 “+”运算符重载函数 operator+,执行结果是对象 com 的数据成员 real 被加上一个整数 100。
然而,下面的语句是错误的:
com1=100+com; //编译错误,运算符 + 的左侧是整数
这条语句被 C++ 编译系统解释为:
com1=100.operator+(com