类外实现
//类外实现
class A {
public:
int a;
A(int a) {
this->a = a;
}
};
A& operator+(int a, A& p){ //数在+左,对象在+右
p.a += a;
return p;
}
A& operator+(A& p,int a){ //对象在+左,类在+右
p.a += a;
return p;
}
A& operator+(A& p,A& p2){ //+两边都是对象
p.a += p2.a;
return p;
}
int main()
{
A p1(10), p2(20);
p1 = p1 + 1 + p2 + 1; //上述三个重载少一个就报错
cout<<p1.a;
return 0;
}
类内实现
class A {
public:
int a;
A(int a) {
this->a = a;
}
A& operator+(int a) {
this->a += a;
return *this;
}
A& operator+(A& p) {
this->a += p.a;
return *this;
}
};
int main()
{
A p1(10), p2(20);
p1 = p1 + 4 + p2 + 5;
cout << p1.a;
return 0;
}