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

Nạp chồng toán tử một ngôi (Unary Operator Overloading) trong C++


Từ khóa operator khai báo hàm chỉ định ý nghĩa của toán tử khi áp dụng cho instance của lớp. Điều này cho phép toán tử có nhiều nghĩa, gọi là "nạp chồng" (overloading). Compiler phân biệt các nghĩa bằng kiểu operand.

Toán tử một ngôi (unary) hoạt động trên một operand. Ví dụ:

  • Tăng (++) và giảm (--)
  • Toán tử âm (-)
  • Toán tử logic not (!)

Toán tử một ngôi thường đứng trước đối tượng (prefix): !obj, -obj, ++obj. Đôi khi dùng hậu tố (postfix): obj++, obj--.

Ví dụ: Nạp chồng toán tử ! (bang) cho prefix

#include <iostream>
using namespace std;

class Distance {
private:
    int feet;   // 0 to infinite
    int inches; // 0 to 12
public:
    Distance(int f, int i) { feet = f; inches = i; }
    void display() { cout << "F: " << feet << " I:" << inches << endl; }
    // Overload ! operator
    Distance operator!() {
        feet = -feet;
        inches = -inches;
        return Distance(feet, inches);
    }
};

int main() {
    Distance D1(3, 4), D2(-1, 10);
    !D1; D1.display();  // display D1
    !D2; D2.display();  // display D2
    return 0;
}

Kết quả

F: -3 I:-4
F: 1 I:-10