嗨我有一個代碼片段是一個單身類(我相信),使用'新'和一些其他範圍和靜態限定符以我沒有見過的方式。因爲我不知道它叫什麼,所以我找不到它所做的或它的目的的任何信息。下面的代碼:C++單身人士和新運營商
在myClass.h文件我有
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 - 第16行發生了什麼(new(p_myClass)myClass(); )的.cpp文件
3 - 以這種方式使用類的總體目的是什麼?
我真的很希望這個問題不是重複。我搜索了一段時間的答案,但不知道甚至搜索什麼條件。謝謝你的幫助。
FWIW如果你要使用單例見:http://stackoverflow.com/questions/1008019/c-singleton-design-pattern – NathanOliver
你也許還想讀[單身人士有什麼不好?](http ://sackoverflow.com/questions/137975/what-is-so-bad-about-singletons?rq = 1) –
對象'sm_myClass'在程序啓動時生成。對放置的調用新嘗試在已有的對象上構建一個新的對象,給出未定義的行爲。 –