result = bar+foo;
также можно записать как result = bar.operator+(foo);
.
Так что в случае bar + foo
мы вызываем функцию-член operator+
на панели и передаем ей параметр foo
.
Мы могли бы написать это следующим образом, и это тот же принцип.
class CVector {
public:
int x, y;
CVector() {};
CVector(int a, int b) : x(a), y(b) {}
CVector add(const CVector&);
};
CVector CVector::add(const CVector& param) {
CVector temp;
cout << x << " " << param.x << endl; //my addition
temp.x = x + param.x;
temp.y = y + param.y;
return temp;
}
int Desperate2() {
CVector bar(1, 2);
CVector foo(3, 4);
CVector result;
result = bar.add(foo);
cout << result.x << ',' << result.y << '\n';
return 0;
}
Тот факт, что bar+foo
вызывает функцию-член operator+
, может считаться синтаксическим сахаром.