#include <iostream>
class UInt{
public:
UInt():m_id(0) {}
friend std::ostream& operator<<(std::ostream& cout, const UInt &it);
UInt& operator++() {
std::cout<<"prefix++"<<std::endl;
(*this) +=1;
return *this;
}
const UInt operator++(int i) {
std::cout<<"postfix++"<<std::endl;
UInt old = *this;
++(*this);
return old;
}
UInt& operator+=(int i) {
std::cout<<"+="<<std::endl;
(*this).m_id +=i;
return *this;
}
int m_id;
};
std::ostream& operator<<(std::ostream& cout, const UInt &it){
std::cout<<it.m_id<<std::endl;
return cout;
}
void Test()
{
UInt it;
it++;
std::cout<<it<<std::endl;
UInt it1;
++(++it1);
std::cout<<it1<<std::endl;
}
int main()
{
Test();
return 0;
}