Computer >> Máy Tính >  >> Lập trình >> C ++

Nạp chồng toán tử một ngôi trong C ++?

Từ khóa toán tử khai báo một hàm chỉ định ký hiệu toán tử có nghĩa là gì khi áp dụng cho các thể hiện của một lớp. Điều này cung cấp cho toán tử nhiều hơn một ý nghĩa, hoặc "quá tải" nó. Trình biên dịch phân biệt giữa các ý nghĩa khác nhau của một toán tử bằng cách kiểm tra các loại toán hạng của nó.

Toán tử một ngôi hoạt động trên một toán hạng đơn và sau đây là các ví dụ về toán tử một ngôi -

  • Toán tử tăng (++) và giảm (-).
  • Toán tử trừ (-) một bậc.
  • Toán tử logic not (!).

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

Ví dụ sau giải thích cách toán tử bang (!) Có thể bị quá tải khi sử dụng tiền tố -

Ví dụ

#include <iostream>
using namespace std;

class Distance {
   private:
   int feet; // 0 to infinite
   int inches; // 0 to 12

   public:
   // Constructor
   Distance(int f, int i) {
      feet = f;
      inches = i;
   }

   // method to display distance
   void display() {
      cout << "F: " << feet << " I:" << inches <<endl;
   }

   // overloaded bang(!) 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;            // apply negation
   D2.display();   // display D2

   return 0;
}

Đầu ra

Điều này sẽ cung cấp đầu ra -

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