提问者:小点点

无朋友类加法的交换性


有没有更简单的方法来实现加法的交换性,而不用friend来类? 如果我有一个很好的理解,没有可能在类中创建双参数运算符。

class Myclass
{
private:
    int var;

public:
    Myclass() : var(0) {};
    void showVar() { cout << var << endl; }
    
    friend void operator+(Myclass&, int);
    friend void operator+(int, Myclass&);
};

void operator+(Myclass& obj, int x) { obj.var += x; }
void operator+(int x, Myclass& obj) { obj.var += x; }

void main()
{
    Myclass obj;

    obj + 5;
    obj.showVar();

    5 + obj;
    obj.showVar();
}

共1个答案

匿名用户

只需定义:

void operator+(int x, Myclass& obj) { obj + x; }

顺便说一下,用这种方式使用运算符+是很奇怪的。 通常,i+2不会修改i的值。