在其方法中获取singleton实例

Getting singleton instance inside its methods

本文关键字:singleton 实例 获取 方法      更新时间:2023-10-16

我有一个简单的单例类:

class Singleton
{
    public:
        static Singleton& getInstance()
        {
            static Singleton instance;
            return instance;
        }
        // private constructor, etc...
}

问题是我应该如何从类实例的成员函数访问它?我看到了各种各样的代码片段,现在我很好奇它们是否有任何显著的差异。

1.

void Singleton::something(){
    Singleton &self = getInstance();
    self.doSomething();
}

2.

void Singleton::something(){
    this->doSomething();
}

3.

void Singleton::something(){
    doSomething();
}
  1. 是不必要的复杂性-在像something这样的非静态成员函数中,我们已经有了一个实例,所以不需要单独获取它。

  2. 和3。相同,只有3个。更短且更惯用-在C++中使用this->访问成员并不常见。

我认为除了Singleton::getInstance();之外,不应该有任何其他成员函数来获取类实例,因为这就是它存在的原因。按以下步骤操作:

Sungleton &dst=Singleton::getInstance();

事实上,并没有办法从非静态成员函数中获取实例。当没有类实例时,如何调用它的非静态成员。