目前有以下几种常用的单例模式类:
class A
{
static A a;
static A* instance()
{
return &a;
}
}
在这种情况下,在模块全局变量或者静态变量初始化的时候A类就会初始化,这种情况下,如果与A类有关系的变量没有被初始化的话就会出现问题。
class B
{
static B* instance()
{
//这里加上对象锁。
static B b;
return &a;
}
}
在这种情况下,当用户调用instance的时候B类才会初始化。但有一个问题,这个B对象是在堆栈上分配的。。。。。。
class C
{
static C* instance()
{
//这里加上对象锁。
if(c == NULL)
{
c = new C();
}
return c;
}
static C* c ;
}
这种我觉得是最好的。