Chúng tôi sẽ chỉ cho bạn cách thêm một số toán tử mới vào một lớp hiện có, vì đây là ứng dụng chính của cơ chế nạp chồng toán tử.
Lúc trước chúng ta đã đề cập đến các toán tử “<<” và “>>” và bây giờ chúng ta sẽ nạp chồng (overload) chúng.
Đoạn code này →
1 2 3 4 5 |
Stack stack(100); int var; stack << 200; // push stack >> var; // pop |
minh hoạ mục tiêu mà chúng ta sẽ thực hiện. “<<” sẽ là một từ đồng nghĩa với việc gọi phương thức push và “>>” đóng vai trò của hàm pop. Làm sao chúng ta làm việc đó bây giờ ?
Ngôn ngữ C++ coi các toán tử được nạp chồng giống như các hàm đặc biệt (gọi là operator function). Số lượng các tham số của hàm này phải tương ứng với số các đối số của toán tử, nhưng nó không đơn giản như bạn mong đợi (ví dụ như một hàm thực hiện vai trò mới của toán tử nhị phân chưa chắc cần có 2 tham số). Tên các hàm như vậy cũng khá đặc biệt: nó bao gồm một từ khóa “operator” gắn với một ký hiệu của toán tử.
Ví dụ: một hàm thực hiện toán tử “>>” sẽ được đặt tên:
operator>>
Bạn không thể đặt tên nó theo bất kỳ cách nào khác.
Một hàm toán tử có thể được thực hiện theo hai cách:
- như một hàm thành viên của một lớp – ngầm định rằng đối tượng của lớp đó là một trong những đối số của toán tử
- như là một hàm “độc lập” – hàm phải chỉ định rõ ràng kiểu dữ liệu của tất cả các đối số của nó
Chúng ta sẽ bắt đầu với cách đầu tiên ở bài tiếp theo.