Ví dụ trực quan về thứ tự thực hiện các toán tử C++ (phần 1)

Ảnh: Ví dụ trực quan về thứ tự thực hiện các toán tử C++

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++

Author:

Tôi là Tuấn Anh, một lập trình viên C++, hiện tại đang làm việc với Qt Framework. Giờ đã là bố của một thanh niên nhỏ, gần đây tôi thấy mình cần sống có trách nhiệm hơn nữa. : ]] Tôi cảm thấy nếu tôi không có nơi nào đó để ghi lại, tôi sẽ quên mất nhiều thứ. Dấu chân trên cát cũng vậy, nếu ta không chụp ảnh nó lại, rồi nó cũng sẽ bị gió làm mờ đi dần rồi mất hút hẳn. Cảm ơn anh em đã ghé qua và đọc những gì tôi viết. Hữu duyên thiên lý Ngô tương nặng, à nhầm Năng tương ngộ. : ]] Thân ái 3000!
© Giao diện website thiết kế bởi TuanTiTien.com