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

Toán tử một ngôi (unary) trong C++ 

Hoạt động trên một toán hạng đơn và dưới đây là một số ví dụ về toán tử một ngôi:

  • Nạp chồng toán tử tăng (++) và toán tử giảm (--) trong C++.
  • Toán tử một ngôi (-) trong C++
  • Toán tử logic phủ định (!) trong 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ì toán tử này xuất hiện bên trái đối tượng, dạng như: !obj, -obj, và ++obj, nhưng đôi khi chúng có thể sử dụng như là hậu tố giống như obj++ hoặc obj--.

Ví dụ sau giải thích cách toán tử (-) có thể được nạp chồng với sự sử dụng tiền tố cũng như hậu tố.

#include 
using namespace std;


class KhoangCach
{
   private:
      int met;         
      int centimet;    
   public:
      // khai bao cac constructor
      KhoangCach(){
         met = 0;
         centimet = 0;
      }
      KhoangCach(int m, int c){
         met = m;
         centimet = c;
      }
      // phuong thuc de hien thi khoang cach
      void hienthiKC()
      {
         cout << "Khoang cach bang m la: " << met << endl;
         cout << "Khoang cach bang cm la: " << centimet << endl;
         cout << "\n\n================================\n\n" << endl;
      }
      // nap chong toan tu (-)
      KhoangCach operator- ()  
      {
         met = -met;
         centimet = -centimet;
         return KhoangCach(met, centimet);
      }
};
int main()
{
   KhoangCach K1(20, 6), K2(-6, 15);


   -K1;                     // ap dung su phu dinh
   K1.hienthiKC();    // hien thi K1


   -K2;                     // ap dung su phu dinh
   K2.hienthiKC();    // hien thi K2


   return 0;
}

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Bình luận