Когда я ищу информацию о шаблоне синглтона для C ++, я всегда нахожу примеры, подобные этому:
class Singleton
{
public:
~Singleton() {
}
static Singleton* getInstance()
{
if(instance == NULL) {
instance = new Singleton();
}
return instance;
}
protected:
Singleton() {
}
private:
static Singleton* instance;
};
Singleton* Singleton::instance = NULL;
Но этот вид синглтона, похоже, тоже работает:
class Singleton
{
public:
~Singleton() {
}
static Singleton* getInstance()
{
return &instance;
}
protected:
Singleton() {
}
private:
static Singleton instance;
};
Singleton Singleton::instance;
Полагаю, что второй синглтон создается в начале программы, в отличие от первого, но единственное ли это отличие?
Почему мы находим в основном первое?