c++中我想重载运算符++和--,然后我设立了一个类,之后在主函数中为什么a++会报错,而++a就可以通过呢?emm或者是我没理解运算符重载吧
#include
using namespace std;
class Calculator{
private:
int value;
public:
Calculator(){value=0;}
int operator--();
int operator++();
int operator()();
};
int Calculator::operator()(){
return value;
}
int Calculator::operator++(){
if(value<65535)value++;
else{
cout<<"Date overflow"<abort();
}
}
int Calculator::operator--(){
if(value>0)value--;
else{
cout<<"Date overflow"<abort();
}
}
int main(){
int i=0;
Calculator a;
for(i=0;i<5;i++){
a++;
cout<<"A="<<a()<for(i=0;i<=5;i++){
--a;
cout<<"A="<<a()<
}
基于new BIng的回答:
你好,你的代码中重载了前缀自增和自减运算符,但没有重载后缀自增和自减运算符。在C++中,后缀自增和自减运算符需要一个额外的int参数来区分它们与前缀运算符。例如,你可以这样定义后缀自增运算符:
int Calculator::operator++(int){
int temp = value;
if(value<65535)value++;
else{
cout<<"Date overflow"<<endl;
abort();
}
return temp;
}
同理,你也可以定义后缀自减运算符。希望这对你有帮助。
不知道你这个问题是否已经解决, 如果还没有解决的话: