Trong lập trình C++, ta dễ dàng Google và đọc được rằng Hầu hết các toán tử trong ngôn ngữ C ++ có ràng buộc bên trái (left-sided binding) , có nghĩa là việc tính toán biểu thức được tiến hành từ trái sang phải
Triển khai một class với khai báo như sau
class AnhObject
{
int m_a;
public:
AnhObject(int a) : m_a(a) {
}
int getA() {
return m_a;
}
void setA(int a) {
m_a = a;
}
AnhObject operator+( AnhObject &other ) {
cout << "this: " << this->getA() << endl;
cout << "other: " << other.getA() << endl;
return AnhObject(this->getA() + other.getA());
}
AnhObject operator = (AnhObject obj) {
this->setA(obj.getA());
return *this;
}
};
Và ở main() function ta khai báo
int main()
{
AnhObject a1(100);
AnhObject a2(200);
AnhObject a3(300);
AnhObject a4(400);
a4 = a1 + a2 + a3;
cout << "a4: " << a4.getA() << endl;
return 0;
}
Chương trình chạy ra kết quả
this: 100
other: 200
this: 300
other: 300
a4: 600
ví dụ cho ta thấy được trong phép cộng ( a + b + c ) a sẽ được cộng với b (toán tử + được gọi), ghi nhớ kết quả của phép tính này lại, kết quả đó được cộng tiếp với c (toán tử + tiếp tục được gọi)
TuanTiTien++