Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cộng hai số sử dụng toán tử '-' qua Overloading trong C++

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.