Operator Overloading (Nạp chồng toán tử) là khái niệm quan trọng trong C++. Đây là một dạng đa hình (polymorphism) mà trong đó một toán tử được nạp chồng để mang ý nghĩa do người dùng định nghĩa. Toán tử nạp chồng dùng để thực hiện phép toán trên kiểu dữ liệu do người dùng định nghĩa.
Ví dụ
Input: 10 20 20 30 Output: 30 50
Giải thích
Thực hiện phép cộng hai số sử dụng toán tử '-' bằng Operator Overloading. Toán tử nhị phân cần một đối tượng làm tham số. Nếu dùng Friend function thì cần hai tham số.
Toán tử được gọi: ob1 - ob2. Đối tượng trước toán tử (ob1) sẽ gọi hàm, đối tượng sau (ob2) được truyền làm tham số.
Truyền 10, 20 cho x, y của ob1 và 20, 30 cho x, y của ob2.
Code ví dụ
#include <iostream>
using namespace std;
class Sum {
public:
int x, y;
void getdata(int a, int b) {
x = a;
y = b;
}
void display() {
cout << "\nTong X: " << x;
cout << "\nTong Y: " << y;
}
// Nạp chồng toán tử -
void operator-(Sum &ob);
};
void Sum::operator-(Sum &ob) {
x = x + ob.x; // Thực hiện phép CỘNG nhưng dùng toán tử -
y = y + ob.y;
display();
}
int main() {
Sum ob1, ob2;
ob1.getdata(10, 20);
ob2.getdata(20, 30);
ob1 - ob2; // Gọi operator- nhưng thực hiện cộng
return 0;
}
Kết quả
Tong X: 30 Tong Y: 50
Lưu ý
Đây là ví dụ minh họa kỹ thuật nạp chồng toán tử. Trong thực tế, không nên nạp chồng toán tử '-' để thực hiện phép cộng vì vi phạm nguyên tắc nhất quán và gây nhầm lẫn.