我已经看到了Singleton模式的实现,其中实例变量在GetInstance方法中被声明为静态变量。像这样:
SomeBaseClass &SomeClass::GetInstance()
{
static SomeClass instance;
return instance;
}
我看到这种方法有以下积极方面:
代码更简单,因为只有第一次调用GetInstance时,编译器才负责创建此对象。
该代码更加安全,因为没有其他方法可以获取对实例的引用,但是可以使用GetInstance方法,并且没有其他方法可以更改实例,但是可以在GetInstance方法内部进行。
这种方法的负面影响是什么(除了这不是面向对象的)?这是线程安全的吗?
慕哥6287543
catspeake