#include <iostream>
using namespace std;

class referent
{};

class ref_class
{
public:
	ref_class (int & i) :
		iref(i)
	{}
	void new_ref (int & i)
	{
		iref = i;
	}
	void set_ref ()
	{
		iref = 12;
	}
	void out_ref ()
	{
		cout << iref << endl;
	}
private:
	int & iref;
	//int * & pref;
	//referent & rref;
};

int main()
{
	int i = 10;
	cout << "init with 10 ";
	ref_class r(i);
	r.out_ref();
	
	cout << "increment i outside class ";
	i++;
	r.out_ref();

	cout << "set to 12 ";
	r.set_ref();
	r.out_ref();
	
	int j = 15;
	cout << "new ref to 15 ";
	r.new_ref(j);
	r.out_ref();
}


