单例模式顾名思义就是一个类型的实例在整个运行期间只能出现一次
话不多说,上代码
#include <iostream>
using namespace std;
class Singleton
{
private:
Singleton(){}
static Singleton *m_instance;
public:
static Singleton* GetInstance()
{
if (!m_instance)
{
m_instance = new Singleton;
}
return m_instance;
}
};
Singleton * Singleton::m_instance = NULL;
int main(int ac, char **av)
{
Singleton *pInstance1 = Singleton::GetInstance();
Singleton *pInstance2 = Singleton::GetInstance();
cout << "pInstance1:" << pInstance1 << endl;
cout << "pInstance2:" << pInstance2 << endl;
system("pause");
return 0;
}
简单解释一下:
1.构造函数是private的,所以类外是无法调用构造函数的
2.static类型的instance,全局只可能有一个,并且是private的,类外无法获得,只能通道公共接口GetInstance()获取实例
3.公共接口GetInstance(),这个获取实例,类型是static,不依赖于具体对象
4.static的成员变量必须类外初始化
程序运行结果:
pInstance1:003655D8
pInstance2:003655D8