在其方法中获取单例实例

Getting singleton instance inside its methods

我有简单的单例class:

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

问题是我应该如何从其成员函数访问 class 实例? 我看过各种代码片段,现在我很好奇它们是否有任何显着差异。

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();之外不应该有任何其他成员函数来获取class实例,因为这就是它存在的原因。如下操作:

Sungleton &dst=Singleton::getInstance();

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