C++ 多重运算符重载

c++ multiple operator overloading

我想多次重载某些运算符,但我不知道该怎么做我有一个 class

例如

int main(){
    addClass c1;
    addClass c2;
    addClass c1 = (c2 + 10 * c2 + 2 * c3)*c3; 
}

我的问题是我不知道如何让这么多的opreator ovrloading,我的意思是我需要什么return才能让它继续下一个opreator? 我试过了

    class addClass 
    //declration
        friend addClass & operator*(const double, const addClass &);

    addClass & operator*(double x, const addClass & a1)
    {
        int i;
        addClass add(a1.rank);
    add.res=x*a1.res
        }
        return res;
    }

但对于下一个操作者,我 运行 遇到了一些问题,所以我想知道该怎么做

谢谢!

即使对于重载运算符,计算顺序也与往常相同,因此在这个示例中,我在运算符中添加了打印...

#include <iostream>

class addClass {
public:
    addClass() : addClass(0) {}

    // converting constructor
    addClass(int x) : value(x) {}

    addClass& operator+=(const addClass& rhs) {
        value += rhs.value;
        return *this;
    }
    addClass& operator-=(const addClass& rhs) {
        value -= rhs.value;
        return *this;
    }    
    addClass& operator*=(const addClass& rhs) {
        value *= rhs.value;
        return *this;
    }
    addClass& operator/=(const addClass& rhs) {
        value /= rhs.value;
        return *this;
    }

    int getValue() const { return value; }
private:
    int value;
};

std::ostream& operator<<(std::ostream& os, const addClass& ac) {
    return os << ac.getValue();
}

addClass operator+(addClass lhs, const addClass& rhs) {
    std::cout << lhs << '+' << rhs << '=';
    lhs += rhs;
    std::cout << lhs << '\n';
    return lhs;
}
addClass operator-(addClass lhs, const addClass& rhs) {
    std::cout << lhs << '-' << rhs << '=';
    lhs -= rhs;
    std::cout << lhs << '\n';
    return lhs;
}
addClass operator*(addClass lhs, const addClass& rhs) {
    std::cout << lhs << '*' << rhs << '=';
    lhs *= rhs;
    std::cout << lhs << '\n';
    return lhs;
}
addClass operator/(addClass lhs, const addClass& rhs) {
    std::cout << lhs << '/' << rhs << '=';
    lhs /= rhs;
    std::cout << lhs << '\n';
    return lhs;
}

int main(){
    addClass c1;
    addClass c2 = 100;
    addClass c3 = 2;
    c1 = (c2 + 10 * c2 / 2 * c3)*c3;
}

...你会得到这个输出:

10*100=1000
1000/2=500
500*2=1000
100+1000=1100
1100*2=2200