class ControlConfig {

public:
	static ControlConfig &instance();
	virtual void op1 = 0; 
protected :
	ControlConfig();
	virtual ~ControlConfig();
private : 
	//member object ControlConfig. * syntex of reference Class object.
	static ControlConfig *instance_;
	//member data
	friend class Destroyer;
};

//initialize parameter
ControlConfig *ControlConfig::instance_ = 0;

//main idea for create only one instace for config 
ControlConfig::instance(){
	if( ! = instance_ ){
		instance_ = new ControlConfig();
	}
	return *instance_;
}

ControlConfig::ControlConfig()
{
	std::cout<<"Create Object"<<std::endl;
}

ControlConfig::~ControlConfig()
{
	std::cout<<"Destroyer Object"<<std::endl;
}

//destroyer instance 
class Destroyer{
public :
	~Destroyer(){
		delete ControlConfig::instance_;
	}
}

//create namespace 
namespace{
	Destroyer d;
}

//concept by C++ Gotchas 
