上两节可以这样运算:
A a1(1);
A a2(4);
a1 = a2 + 2;
但是这样的话就不行了:
a1 = 2 + a2;
因为A对象调用operator+时必须在运算符+的左边,这是C++语言定义的方式。
我们可以这样子需改:在类内声明:friend A operator +(const A & rhs,const A & lhs);
在类外定义:
A operator +(const A & rhs,const A & lhs) { A newA; newA.setValue(rhs.mValue + lhs.mValue); return newA; }
注意这里不应该是:A A::operator +(const A& rha,const A& lhs)
因为这是friend函数,是全局函数;
这样就可以运算a1 = 2 + a2;