试图在 c++ 中重载 post 增量运算符,但答案不是预期的
Tryiing to overload the post increment operator in c++ in but the answer is not as expected
#include <iostream>
using namespace std;
class B{
int temp1;
public :
void disp()
{
cout <<temp1;
}
void setA(int a)
{
temp1=a;
}
void operator ++(int)
{
temp1+=5;
}
void cal()
{
temp1 ++;
}
};
int main()
{
B b;
b.setA(10);
b.cal();
b.disp();
return 0;
}
我最近了解了运算符重载,所以开始研究代码......所以这里的预期答案是 15,但它显示为 11。为什么我的重载运算符不工作......特别是哪里出了问题使用此代码 rsince 这部分似乎存在逻辑错误:
void operator ++(int)
{
temp1+=5;
}
void cal()
{
temp1 ++;
}
请注意,您为 class B
重载了 ++
运算符。 cal
方法使用 ++
成员 temp1
递增,它是 int
,而不是 B
- 因此 - 它通常从 10 增加到 11。
如果您在 main
函数中完成 b++
,您就会得到预期的结果。注意 ++
应该 return 增量对象的前一个值,如果你希望与大多数人的期望保持一致,所以
something = b++; //something should probably be a B.
会起作用。
#include <iostream>
using namespace std;
class B{
int temp1;
public :
void disp()
{
cout <<temp1;
}
void setA(int a)
{
temp1=a;
}
void operator ++(int)
{
temp1+=5;
}
void cal()
{
temp1 ++;
}
};
int main()
{
B b;
b.setA(10);
b.cal();
b.disp();
return 0;
}
我最近了解了运算符重载,所以开始研究代码......所以这里的预期答案是 15,但它显示为 11。为什么我的重载运算符不工作......特别是哪里出了问题使用此代码 rsince 这部分似乎存在逻辑错误:
void operator ++(int)
{
temp1+=5;
}
void cal()
{
temp1 ++;
}
请注意,您为 class B
重载了 ++
运算符。 cal
方法使用 ++
成员 temp1
递增,它是 int
,而不是 B
- 因此 - 它通常从 10 增加到 11。
如果您在 main
函数中完成 b++
,您就会得到预期的结果。注意 ++
应该 return 增量对象的前一个值,如果你希望与大多数人的期望保持一致,所以
something = b++; //something should probably be a B.
会起作用。