I have seen the following two examples:
class singleton {
protected:
static singleton *instance;
singleton() { }
public:
static singleton *getInstance() {
if (instance == 0)
instance = new singleton();
return instance;
}
};
singleton *singleton::instance = 0; //This seems weird - why isn't nullptr being used ?
And this example:
class Singleton
{
private:
static Singleton *p_inst;
Singleton();
public:
static Singleton * instance()
{
if (!p_inst) // why isn't this being compared with nullptr ?
{
p_inst = new Singleton();
}
return p_inst;
}
};
To check if the instance has been created, why don't people do something like this:
class Singleton
{
private:
static Singleton *p_inst = nullptr;
Singleton();
public:
static Singleton * instance()
{
if (p_inst != nullptr) // why isn't this being compared with nullptr ?
{
p_inst = new Singleton();
}
return p_inst;
}
};
What is the correct way ?
Aucun commentaire:
Enregistrer un commentaire