#include <iostream>
using namespace std;
class Int
{
public:
Int(const int& num) : _num(num) {}
Int(const Int& num) : _num(num._num) {}
Int& operator=(const Int& num) {
_num = num._num;
return *this;
}
~Int(void) {}
const int& num(void) const {
return _num;
}
Int operator++(int) {
Int result(*this);
_num++;
return result;
}
private:
int _num;
};
inline const Int operator+(const Int& a, const Int& b) {
return Int(a.num() + b.num());
}
int main(void)
{
{
int C=2, U=0;
U = C + C++;
cout << "U = " << U << endl;
}
{
Int C=2, U=0;
U = C + C++;
cout << "U = " << U.num() << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSW50CnsKcHVibGljOgoJSW50KGNvbnN0IGludCYgbnVtKSA6IF9udW0obnVtKSB7fQoJSW50KGNvbnN0IEludCYgbnVtKSA6IF9udW0obnVtLl9udW0pIHt9CglJbnQmIG9wZXJhdG9yPShjb25zdCBJbnQmIG51bSkgewoJCV9udW0gPSBudW0uX251bTsKCQlyZXR1cm4gKnRoaXM7Cgl9Cgl+SW50KHZvaWQpIHt9CgoJY29uc3QgaW50JiBudW0odm9pZCkgY29uc3QgewoJCXJldHVybiBfbnVtOwoJfQoKCUludCBvcGVyYXRvcisrKGludCkgewoJCUludCByZXN1bHQoKnRoaXMpOwoJCV9udW0rKzsKCQlyZXR1cm4gcmVzdWx0OwoJfQpwcml2YXRlOgoJaW50IF9udW07Cn07CgppbmxpbmUgY29uc3QgSW50IG9wZXJhdG9yKyhjb25zdCBJbnQmIGEsIGNvbnN0IEludCYgYikgewoJcmV0dXJuIEludChhLm51bSgpICsgYi5udW0oKSk7Cn0KCgppbnQgbWFpbih2b2lkKQp7Cgl7CgkJaW50IEM9MiwgVT0wOwoJCVUgPSBDICsgQysrOwoKCQljb3V0IDw8ICJVID0gIiA8PCBVIDw8IGVuZGw7Cgl9CgoJewoJCUludCBDPTIsIFU9MDsKCQlVID0gQyArIEMrKzsKCgkJY291dCA8PCAiVSA9ICIgPDwgVS5udW0oKSA8PCBlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=