Khuyết Danh
Giáo trình C++
4/ Lập trình hướng đối tượng
Bài 4.2
Quá tải các toán tử
C++ cho phép sử dụng các toán tử chuẩn của ngôn ngữ giữa các lớp giống như
với các kiểu dữ liệu cơ bản. Ví dụ:
int a, b, c;
a = b + c;
là hoàn toàn hợp lệ vì các biến ở đây đều có kiểu là các kiểu dữ liệu cơ bản.
Tuy nhiên, việc chúng ta có thể thực hiện thao tác sau đây có vẻ không hiển
nhiên lắm (thực tế là nó không hợp lệ):
struct { char product [50]; float price; } a, b, c;
a = b + c;
Phép gán một lớp (hay một cấu trúc) với một đối tượng cùng kiểu là được phép
(copy constructor mặc định). Nhưng phép cộng sẽ gây ra lỗi vì nó được dùng
với các kiểu dữ liệu không cơ bản.
Nhưng cần phải cám ơn khả năng quá tải toán tử của C++, chúng ta có thể làm
cho các đối tượng kiểu như trên có thể chấp nhận các toán tử đó mà không làm
thay đổi ý nghĩa của nó đối với các kiểu dữ liệu cơ bản. Dưới đây là danh sách
tất cả các toán tử có thể được quá tải:
+ - * / = < > += -= *= /= << >>
<<= >>= == != <= >= ++ -- % & ^ ! |