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

Nạp chồng toán tử trừ đơn ngôi (-) trong C++

Từ khóa operator khai báo một hàm xác định ý nghĩa của ký hiệu toán tử khi áp dụng cho các đối tượng của một lớp. Điều này cho phép toán tử có nhiều hơn một ý nghĩa, hay còn gọi là "nạp chồng" (overloading) nó. Trình biên dịch phân biệt các ý nghĩa khác nhau của một toán tử bằng cách kiểm tra kiểu dữ liệu của các toán hạng.

Các toán tử đơn ngôi (unary operators) hoạt động trên một toán hạng đơn lẻ. Dưới đây là một số ví dụ về các toán tử đơn ngôi:

  • Toán tử tăng (++) và giảm (--).
  • Toán tử âm đơn ngôi (-).
  • Toán tử phủ định logic (!).

Các toán tử đơn ngôi tác động lên đối tượng mà chúng được gọi và thường xuất hiện ở phía bên trái của đối tượng, như !obj, -obj, và ++obj, nhưng đôi khi cũng có thể dùng như hậu tố như obj++ hoặc obj--.

Ví dụ sau minh họa cách nạp chồng toán tử trừ (-) cho trường hợp tiền tố:

Ví dụ

#include <iostream>
using namespace std;

class Distance {
private:
    int feet;
    int inches;
public:
    // Constructor
    Distance(int f, int i) {
        feet = f;
        inches = i;
    }
    // Phương thức hiển thị khoảng cách
    void display() {
        cout << "F: " << feet << " I:" << inches << endl;
    }
    // Nạp chồng toán tử trừ đơn ngôi (-)
    Distance operator-() {
        feet = -feet;
        inches = -inches;
        return Distance(feet, inches);
    }
};

int main() {
    Distance D1(3, 4), D2(-1, 10);
    -D1;  // Sửa lỗi: bài gốc dùng !D1 nhưng nạp chồng là operator-()
    D1.display();
    -D2;
    D2.display();
    return 0;
}

Kết quả

Chương trình sẽ cho ra kết quả:

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