こんにちは、私は前に見たことのない方法で 'new'と他のスコープと静的修飾子を使うシングルトンクラスのコードスニペットを持っています。私はそれが何が呼び出されているのかわからないので、それが何をしているのかその目的についての情報を見つけることができません。以下のコード:myClass.hファイルでC++のシングルトンと新しい演算子
私は
class myClass
{
private:
static myClass sm_myClass;
myClass();
public:
static void Create(void);
};
を持っているとmyClass.cppに私は
#include "myClass.h"
#include <new>
myClass* p_myClass = NULL;
myClass myClass::sm_myClass;
myClass::myClass()
{
}
void myClass::Create(void)
{
p_myClass = &sm_myClass;
new (p_myClass) myClass();
}
を持っている私の質問は次のとおりです。
1 - 何が起こっています.cppファイルの6行目(myClass myClass :: sm_myClass;)
2行目:何が起こっているか(新しい(p_myClass)myClass(); ).cppファイルの
3 - このようにクラスを使用する目的は何ですか?
私は本当にこの質問が繰り返しではないことを願っています。私はしばらくの間、答えを探しましたが、検索する用語を知りませんでした。助けてくれてありがとう。
シングルトンを使いたくない場合はFWIWを参照してください。http://stackoverflow.com/questions/1008019/c-singleton-design-pattern – NathanOliver
[シングルトンについてはどうなっていますか?](http ://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons?rq = 1) –
オブジェクト 'sm_myClass'はプログラムの起動時に生成されます。プレースメントの新規呼び出しは、すでに存在するオブジェクトの上に新しいオブジェクトを構築しようとし、未定義の動作を与えます。 –