有没有更简单的方法来实现加法的交换性,而不用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();
}
只需定义:
void operator+(int x, Myclass& obj) { obj + x; }
顺便说一下,用这种方式使用运算符+
是很奇怪的。 通常,i+2
不会修改i
的值。