C++のシングルトンの初期化について質問です。例えば以下のコードがあったとします:
C++
1class A { 2public: 3 static const A* instance() { 4 return m_instance; 5 } 6 void foo()const { 7 cout << "A::foo()" << endl; 8 } 9 10private: 11 static A* m_instance; 12}; 13A* A::m_instance = 0; 14 15 16int main() { 17 A::instance()->foo(); 18 return 0; 19}
これを実行するときちんと A::foo()と表示されます。ですが、m_instanceのアドレスは0(null)のはずです。なぜこのコードがうまくいくのでしょうか?
また、このように動くならばサンプルコードの多くは
C++
1void create(){ 2m_instance=new A(); 3}
のような記述があるのでしょうか?
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。