如何重载一元/运算符?

时间:2015-04-03 19:20:35

标签: c++ oop

我正在尝试重载一元/(除法)运算符。但它会导致错误。但是,当我尝试重载+, - ,*运算符时,它工作正常。问题导致/运营商。我的代码如下:

#include<bits/stdc++.h>
using namespace std;

class Box
{

     int x,y;
  public:
       void GetData(int a,int b)
        {
              x=a;y=b;
        }
       void Display()
       {
          cout<<x<<" "<<y;  
       }
      void operator /();
};

void Box::operator /()
{

    x/=2;
    y/=2;
}

int main()
{
     Box b;
     b.GetData(10,20);
    // I am getting error in the following line.
     /b;
     b.Display();
  return 0;
}

1 个答案:

答案 0 :(得分:4)

没有一元/运算符这样的东西。 /运算符需要两个操作数。

请注意,仅仅因为两个运算符使用相同的符号,并不意味着它们代表相同的操作。二进制(在2的arity中)-是减法,而一元-是否定的。二进制*是乘法,而一元*是间接的。因此,虽然二元/是除法,但一元/是没有意义的。