我剛剛閱讀了一元運算符重載使用減號( - ),增量(++)等。我以爲只是爲了練習而編寫相同的代碼。但是當我嘗試運行它時,它給了我減號和增量運算符的錯誤。我認爲問題是我在main中調用運算符的方式。請任何人都可以這樣做的正確方法是什麼?一元運算符在C++中重載的困難?
#include<iostream>
using namespace std;
class c{
int x;
int y;
public:
c(int a,int b){
x=a;
y=b;
}
void operator -(){
x=x+1;
y=y+1;
}
void display(){
cout<<x<<" "<<y<<"\n";
}
};
int main()
{
c obj(2,3);
obj.display();
obj- ; //I think the error is on this line
obj.display();
return 0;
}
如果我用-obj代替obj,代碼工作正常。爲什麼?同樣是++運算符重載的問題(使用++ obj工作正常,但obj ++不起作用),爲什麼?
謝謝。
您的重載操作符需要返回一個值。請參閱http://stackoverflow.com/questions/4421706/operator-overloading – 2012-04-20 19:51:33
@ThomasMatthews - 要清楚,它是*約定*,而不是語言,它要求重載操作符返回一個值。重載操作符返回「void」是完全可能的和可接受的。這樣做是合法的,並且排除了運營商的某些用途。 – 2012-04-20 20:35:37