我有简单的单身人士课程:
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();
}
答案 0 :(得分:2)
是不必要的复杂功能 - 在像something
这样的非静态成员函数中,我们已经有了一个实例,因此无需单独获取它。
和3.相同,只有3.更短且更惯用 - 使用this->
访问C ++中的成员并不常见。
答案 1 :(得分:0)
我不认为应该有任何其他成员函数来获取除Singleton::getInstance();
之外的类实例,因为这就是它存在的原因。请按以下步骤操作:
Sungleton &dst=Singleton::getInstance();
实际上,无法从非静态成员函数中获取实例。当没有类实例时,如何调用其非静态成员。