单例类简写

不用额外的内部变量创建单例类的写法。

  一般写法:

1
2
3
4
5
6
7
static Singleton* instance()
{
if (m_instance == NULL)
m_instance = new Singleton();

return m_instance;
}

  简写写法:

1
2
3
4
5
static Singleton *instance()
{
static Singleton *instance = new Singleton();
return instance;
}

  或:

1
2
3
4
5
static Singleton &instance()
{
static Signaleton instance;
return instance;
}

  利用static语法特性,被static关键词标识的变量只会初始化一次,且生命周期为全局的。