在其方法中获取单例实例
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();
}
是不必要的复杂化——在像something
这样的非静态成员函数中我们已经有了一个实例,所以没有必要单独获取它。
和 3. 相同,只有 3. 更短且更惯用 - 在 C++ 中使用 this->
访问成员并不常见。
我认为除了Singleton::getInstance();
之外不应该有任何其他成员函数来获取class实例,因为这就是它存在的原因。如下操作:
Sungleton &dst=Singleton::getInstance();
事实上,无法从非静态成员函数中获取实例。当没有 class instance 时,如何调用它的非静态成员。
我有简单的单例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();
}
是不必要的复杂化——在像
something
这样的非静态成员函数中我们已经有了一个实例,所以没有必要单独获取它。和 3. 相同,只有 3. 更短且更惯用 - 在 C++ 中使用
this->
访问成员并不常见。
我认为除了Singleton::getInstance();
之外不应该有任何其他成员函数来获取class实例,因为这就是它存在的原因。如下操作:
Sungleton &dst=Singleton::getInstance();
事实上,无法从非静态成员函数中获取实例。当没有 class instance 时,如何调用它的非静态成员。