Một số toán tử ngôn ngữ C++ có thể nói là khá rõ ràng và dễ hiểu. Một ví dụ về toán tử như vậy là toán tử “+”. Hầu như ai cũng hiểu: vai trò của toán tử này (ít nhất là tất cả mọi người đã học môn toán), nó hoạt động như thế nào và kết quả mà chúng ta mong đợi từ nó là như nào.
Nhưng… Bạn có nhớ khi chúng ta nói về chuỗi ký tự ? Bạn có nhớ cách mà toán tử “+” hoạt động khi nó liên quan đến một chuỗi không ? Hoạt động của nó không thực sự là rõ ràng và nó không có nhiều tính chất của phép cộng thông thường (nó không có tính giao hoán).
Làm thế nào mà cùng một toán tử lại có thể có những tính chất khác nhau và hoạt động trên đối số rất khác nhau như vậy ? Việc cộng số khác hoàn toàn với cộng chuỗi ký, sự tương đồng duy nhất nằm ở toán tử.
Toán tử “+” không phải là trường hợp duy nhất. Lưu ý rằng “>>” và “<<” cũng như vậy. Phạm vi áp dụng chính của chúng liên quan đến số nguyên (đó là vai trò đầu tiên của các toán tử này trong ngôn ngữ “C”). Như bạn đã biết, trong C++ chúng có thêm ý nghĩa khác và thường được sử dụng kết hợp với các hoạt động nhập/xuất text. Có vẻ như chúng xuất hiện trong vai trò thứ hai nhiều hơn là trong vài trò đầu tiên.
Sở dĩ các toán tử có thể đóng các vai trò khác nhau ở các ngữ cảnh khác nhau như vậy là nhờ một cơ chế tương tự như nạp chồng hàm. C++ không chỉ cho phép các lập trình viên nạp chồng hàm mà còn có thể nạp chồng toán tử.
Trong chương này, chúng ta sẽ học cách định nghĩa và sử dụng một số ý nghĩa mới của các toán tử thông dụng.
Lưu ý rằng C++ không cho phép bạn định nghĩa ra toán tử hoàn toàn mới (ví dụ: bạn không thể định nghĩa toán tử như sau: “$#$”). Bạn chỉ có thể định nghĩa lại các toán tử hiện có của C++.