相关疑难解决方法(0)

Singleton实例声明为GetInstance方法的静态变量,它是否是线程安全的?

我已经看到了Singleton模式的实现,其中实例变量在GetInstance方法中被声明为静态变量.像这样:

SomeBaseClass &SomeClass::GetInstance()
{
   static SomeClass instance;
   return instance;
}
Run Code Online (Sandbox Code Playgroud)

我认为这种方法有以下积极方面:

  • 代码更简单,因为它的编译器只负责在第一次调用GetInstance时创建此对象.
  • 代码更安全,因为没有其他方法可以获取对实例的引用,但是使用GetInstance方法并没有其他方法来更改实例,而是在GetInstance方法中.

这种方法的不利方面是什么(除了这不是非常OOP-ish)?这是线程安全的吗?

c++ singleton design-patterns

30
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×1

design-patterns ×1

singleton ×1