我通常习惯于实现以这种方式Singleton模式,因为它是如此简单:这个单例实现有问题吗?
class MyClass
{
public:
MyClass* GetInstance()
{
static MyClass instance;
return &instance;
}
private:
//Disallow copy construction, copy assignment, and external
//default construction.
};
这似乎不是创建一个静态实例指针,在源文件中初始化它,并使用动态内存显著更容易带有警卫的实例功能分配。
有没有我看不到的缺点?它对我来说看起来是线程安全的,因为我认为第一个线程到达第一个线程会导致实例化 - 而且它看起来很好和简洁。我想,必须有我没有看到,因为这虽然是不常见的一个问题 - 我想获得一些反馈之前,我一直用它
你可以从你的事实,这是一个单身返回MyClass的和,而不是MyClass的* – 2012-02-10 14:10:52
你的意思是,除了? HTTP://计算器。com/q/137975/10077 – 2012-02-10 14:19:30
是的,是的,我知道他们是一个反模式,应该避免:)我仍然感兴趣,为什么这可能不是线程安全的。我知道修改单身人士的数据成员应该是互斥守卫的,但我认为这是通过这个函数创建的是安全的。 – 2012-02-10 14:57:38