2015-04-03 81 views
1

我想超載一元/(部門)運營商。但它會導致錯誤。但是,當我嘗試重載+, - ,*運算符時,它工作正常。問題導致/爲操作員。我的代碼如下:如何超載一元/運算符?

#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; 
} 
+2

沒有一元/運算符超載。另外,請不要這樣做。 +, - 和/不應修改操作數,並應返回一個新對象。 – chris 2015-04-03 19:21:35

+0

'operator /()'不是一個一元運算符! – 2015-04-03 19:21:38

+0

存在的操作符就是您所擁有的操作符,您不能更改操作符的語義含義(例如將二進制操作符變爲一元操作符)。 – 2015-04-03 19:22:54

回答

4

有沒有這樣的事情作爲一元/運算符。 /運算符需要兩個操作數。

請注意,只是因爲兩個操作符使用相同的符號,並不表示它們表示相同的操作。二進制(如2中的一個)-是減法,而一元-是否定。二進制*是乘法,而一元*是間接的。所以雖然二進制/是除法,但一元/是沒有意義的。

+0

這意味着我不能重載/ operator.Is它? – 2015-04-03 19:32:06

+0

@ShadedAdnan你可以重載二進制'/'運算符,但是沒有一個'/'運算符來重載,所以不需要。 – 2015-04-03 19:32:59