1.为雷重载二元运算符时(带两个参数的运算符),常常使用友元运算符,例如Time对象的乘法运算:
与加减运算符不同的是,乘法运算符使用了两个不同的类型,由于左侧操作数为调用函数,若使用成员函数的话,乘法交换律将不复存在,例如 A=B*2.75成立,等价于 A=B.operator*(2.75);但 A=2.75*B将无法操作。
故而想解决这个问题正确的方法是使用友元函数,且对*运算符进行重载,使得支持乘法交换律。
对于非成员重载运算符函数来说,运算符表达式左边的操作数对应于运算符函数的第一个参数,运算符右边的操作数对应于运算符函数的第二个参数
2.重载<<运算符
使用友元运算符是为了呈现 cout<<Time;而非Time<<cout.
注意:将重载函数返回值为&ostrem时可以连续<<;