Khi nói đến nạp chồng toán tử trong C ++, có 3 quy tắc cơ bản bạn nên tuân theo. giống như tất cả các quy tắc như vậy, có rất nhiều ngoại lệ. 3 quy tắc này là -
- 1. Bất cứ khi nào ý nghĩa của một toán tử không rõ ràng và không thể tranh cãi, nó không nên được nạp chồng. Thay vào đó, hãy cung cấp một hàm có tên được chọn tốt. Về cơ bản, quy tắc đầu tiên và quan trọng nhất để nạp chồng toán tử, chính là:
- Đừng làm điều đó.
- Điều đó có vẻ lạ, nhưng chỉ có một số trường hợp mà việc nạp chồng toán tử là phù hợp. Lý do là, thật khó để hiểu ngữ nghĩa đằng sau ứng dụng của một toán tử trừ khi việc sử dụng toán tử trong miền ứng dụng là nổi tiếng và không cần bàn cãi.
- 2. luôn tuân theo ngữ nghĩa nổi tiếng của toán tử. C ++ không có giới hạn về ngữ nghĩa của các toán tử overladen. Trình biên dịch của bạn có thể giải quyết cho mã nguồn triển khai toán tử nhị phân + để tính toán từ số lượng phù hợp của nó. Tuy nhiên, những người sử dụng toán tử liên kết như vậy sẽ không bao giờ nghi ngờ biểu thức a + b để trừ a khỏi b.
- 3. Luôn cung cấp tất cả các thao tác liên quan.
- Các nhà khai thác có liên quan đến nhau và với các hoạt động khác. Nếu kiểu của bạn hỗ trợ a + b, người dùng cũng sẽ có thể gọi a + =b. Nếu nó hỗ trợ gia tăng tiền tố ++ a, họ sẽ mong đợi a ++ cũng hoạt động. Nếu họ có thể kiểm tra xem a b. Nếu họ có thể sao chép-xây dựng kiểu của bạn, họ cũng mong đợi nhiệm vụ sẽ hoạt động.
- Trong hầu hết các trường hợp, bạn không cần quá tải toán tử và chỉ nên quá tải toán tử khi chúng được xác định và phù hợp với tình huống. Bài đăng này được lấy cảm hứng từ https://stackoverflow.com/a/4421708/3719089.