Toán tử quan hệ – Relational operators
Toán tử | == != > >= < <= |
Có thể được thực hiện như là một hàm toàn cục không ? | Có |
Có thể được thực hiện như là một hàm thành việc của lớp không ? | Có |
Kiểu dữ liệu trả về | boolean |
Tất cả các toán tử trên đều là nhị phân và tất cả đều trả về một giá trị Boolean đại diện cho tính đúng đắn của điều kiện đang được đánh giá (kiểm tra).
Lưu ý: nạp chồng một trong những toán tử đó hoàn toàn không ảnh hưởng đến những toán tử khác. Ví dụ: định nghĩa lại ý nghĩa của toán tử ‘==’ không làm định nghĩa lại toán tử ‘!= ‘ và ngược lại. Nạp chồng toán tử ‘<’ cũng không dẫn đến việc tự động nạp chồng các toán tử ‘>’ và ‘>=’.
Hãy xem ví dụ →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <iostream> using namespace std; class V { public: int vec[2]; V(int a0, int a1) { vec[0]=a0; vec[1]=a1; } bool operator==(V &arg) { for(int i = 0; i < 2; i++) { if(vec[i] != arg.vec[i]) { return false; } } return true; } }; bool operator>(V &l, V &r) { return l.vec[0]+l.vec[1] > r.vec[0]+r.vec[1]; } int main(void) { V v1(4, 8), v2(3, 7); cout << (v1 == v2 ? "true" : "false") << endl; cout << (v1 > v2 ? "true" : "false") << endl; return 0; } |
Ví dụ cho thấy cách hoạt động của 2 toán tử mới: ví dụ đầu tiên là khá rõ ràng (nó trả về true khi cả hai vector có cùng giá trị theo thứ tự) trong khi cái thứ hai loằng ngoằng hơn một tý: nó kiểm tra mối quan hệ “lớn hơn” bằng cách só sánh tổng của các phần tử của vectơ.
Chương trình sẽ in ra màn hình:
1 2 |
false true |