为什么这样在类外调用私有构造函数可以通过
#include <iostream>
using namespace std;
class Singleton
{
private:
Singleton(){ m_Test = 10; }
static Singleton *m_Instance;
int m_Test;
public:
static Singleton *GetInstance()
{
return m_Instance;
}
static void DestoryInstance()
{
if (m_Instance != NULL )
{
delete m_Instance;
m_Instance = NULL ;
}
}
int GetTest()
{
return m_Test;
}
};
Singleton* Singleton::m_Instance = new Singleton();//此处调用私有构造函数通过了
Singleton* m_Instance = new Singleton();//而此处则报错
int main(int argc , char *argv [])
{
Singleton *singletonObj = Singleton ::GetInstance();
cout<<singletonObj->GetTest()<<endl;
Singleton ::DestoryInstance();
return 0;
}