2010-03-21 40 views
6

Nếu bạn quá tải - như toán tử-(), nó được sử dụng ở bên trái của đối tượng, tuy nhiên quá tải() như toán tử()() nó được sử dụng ở bên phải của đối tượng. Làm cách nào để biết toán tử nào được sử dụng ở bên trái và toán tử nào được sử dụng ở bên phải?Quá tải toán tử trong C++

+2

Điều này có một câu trả lời đơn giản, nhưng từ quan điểm của một người mới lập trình tôi có thể tưởng tượng điều này có thể là một nguồn nhức đầu nhiều. +1 –

Trả lời

3

Nhìn vào số operator precedence chart. Điều này sẽ cho bạn biết hướng các nhà điều hành liên kết (liên kết). Lưu ý rằng một số toán tử có nhiều biểu mẫu có ý nghĩa khác nhau, chẳng hạn như nhị phân và unary -. Trong những trường hợp như vậy, bạn có thể có nhiều quá tải, ví dụ .:

T operator-() 

và:

T operator-(const T &o) 

Trình biên dịch chọn một trong những quyền căn cứ vào các cú pháp của người điều khiển.

Xem thêm điều này hữu ích set of guidelines.

+0

'Toán tử-()' có thực sự trả về không có gì - không nên trả về giá trị của loại thích hợp hoặc là sự phủ định của giá trị hoặc sự khác biệt giữa các giá trị? –

+0

Cảm ơn vì đã bắt được điều đó, Jonathan. Đã sửa lỗi. –

1

Hầu hết các toán tử đơn nhất chỉ có thể được đặt ở phía được chỉ định của toán hạng. Đối với hai trường hợp đặc biệt, ++--, hãy xem this FAQ.