懒汉式单例模式简单实现
#ifndef _SINGLEOBJECT_H
#define _SINGLEOBJECT_H
#include<mutex>
mutex m;
class SingleObject
{
public:
static SingleObject* getInstan()
{
if (so == NULL)
{
m.lock();
if (so == NULL)
{
so = new SingleObject();
}
m.unlock();
}
return so;
}
void func()
{
std::cout << "sssssssss";
}
private:
SingleObject(){}
SingleObject(const SingleObject&so){}
SingleObject &operator=(const SingleObject&so){}
~SingleObject(){}
static SingleObject *so ;
private:
class Deletor
{
public:
~Deletor()
{
if (SingleObject::so != NULL)
delete SingleObject::so;
}
};
static Deletor deletor;
};
SingleObject *SingleObject::so = NULL;
#endif
测试代码
#include<iostream>
using namespace std;
#include "SingleObject.h"
int main()
{
SingleObject::getInstan()->func();
system("pause");
return 0;
}
注意要点:
- 静态成员的初始化
- 构造函数私有化
- 嵌套类进行内存释放