#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;
}