【发布时间】:2020-01-12 12:05:07
【问题描述】:
我正在学习 C++,但遇到了这个问题:
#include <iostream>
using namespace std;
class test
{
public:
test(){};
test(int i):var{i}{};
test& operator++(){++var; return this;}
test operator++(int dummy){test tmp =*this;var++;return tmp;}
friend ostream& operator<<(ostream&, const test&);
private:
int var;
};
ostream& operator<<(ostream& o, const test& obj)
{
o<<obj.var;
return o;
}
int main()
{
test obj{2};
cout << obj << endl;
obj++;
cout << obj << endl;
cout << obj <<' '<< ++obj<<endl;
return 0;
}
我期望的输出是: 2 3 3 4
相反,我有: 2 3 4 4
如果我用 obj++ 替换最后一个增量 ++obj ,情况就更奇怪了: 2 3 4 3
好像流读反了,能帮帮我吗?
【问题讨论】:
标签: c++ c++11 output operator-overloading increment