四种运算符号作为非成员函数的重载的使用方法

四种运算符号作为非成员函数的重载的使用方法,例如Fraction&operator=(Fraction&,Fraction)为什么是错误的


四种运算符号作为非成员函数的重载的使用方法是:
1. + 重载为加法运算:
 Fraction operator+(Fraction const &f1, Fraction const &f2);
2. - 重载为减法运算:
 Fraction operator-(Fraction const &f1, Fraction const &f2);
3. * 重载为乘法运算:
 Fraction operator*(Fraction const &f1, Fraction const &f2);
4. / 重载为除法运算:
 Fraction operator/(Fraction const &f1, Fraction const &f2);
例如Fraction&operator=(Fraction&,Fraction)为错误的,因为:
1. 赋值运算符=应该作为成员函数重载,而不是非成员函数。
2. 赋值运算符的左边应该是可修改的左值,所以应该是Fraction& operator=(Fraction const &),而不是 Fraction& operator=(Fraction&, Fraction)。
3. 赋值运算符的作用是把右边的Fraction对象的值赋给左边的Fraction对象,所以只需要一个参数,而不是两个参数Fraction& operator=(Fraction&, Fraction)。
所以,正确的Fraction类赋值运算符重载应该是:
cpp
Fraction& Fraction::operator=(Fraction const &f) {
    numerator = f.numerator;
    denominator = f.denominator;
    return *this;
}