#include <iostream>

using namespace std;

class PtrHolder
{
	private:
	char *x_;
	public:
	PtrHolder(char *x): x_(x) {}
	void print(){cout<<"Ptr is "<<*x_<<endl;}
};

class RefHolder
{
	private:
	char &x_;
	public:
	RefHolder(char &x): x_(x) {}
	void print(){cout<<"Ref is "<<x_<<endl;}
};

class ValueHolder
{
	private:
	char x_;
	public:
	ValueHolder(char x): x_(x) {}
	void print(){cout<<"Value is "<<x_<<endl;}
};

int main() {
	char c = 'a';
	PtrHolder p(&c);
	RefHolder r(c);
	ValueHolder v(c);
	c = 'b';
	p.print();
	cout<<"PtrHolder is "<<sizeof(PtrHolder)<<" bytes"<<endl;
	r.print();
	cout<<"RefHolder is "<<sizeof(RefHolder)<<" bytes"<<endl;
	v.print();
	cout<<"ValueHolder is "<<sizeof(ValueHolder)<<" bytes"<<endl;	return 0;
}