- #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=