私はC++が得意ですが、シングルトンがどのように機能するかを理解しようとしています。だから私はここでコードや記事を調べていました。
コードが表示されたら、
class Singleton
{
private:
static bool instanceFlag;
static Singleton *single;
Singleton()
{/*private constructor*/}
public:
static Singleton* getInstance();
void method();
~Singleton()
{instanceFlag = false;}
};
bool Singleton::instanceFlag = false;
Singleton* Singleton::single = NULL;
Singleton* Singleton::getInstance()
{
if(! instanceFlag)
{
single = new Singleton();
instanceFlag = true;
return single;
}
else
{return single;}
}
void Singleton::method()
{cout << "Method of the singleton class" << endl;}
int main()
{
Singleton *sc1,*sc2;
sc1 = Singleton::getInstance();
sc1->method();
sc2 = Singleton::getInstance();
sc2->method();
return 0;
}
上記のコードでは、を出力しMethod of the singleton class
twice
ます。2回印刷したいのならoutput
、なぜシングルトンが必要なのですか。私たちは次のように書くことができます。
sc1->method();
sc2->method();
上記のような複雑なコードが必要なのはなぜですか。私が気づいたことの1つは、instanceFlag
条件がonjectで満たされると真になりますがsc1
、オブジェクトsc2
が呼び出されると、それはelse
一部になります。
So, what exactly we are trying to do here?