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 ControlDataOne();
}
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