1. 代码介绍
实现单例模式的代码很多。
本文的单例模式实现代码是本人一直在工程项目中使用的,现拿出和大家交流分享。
本文实现的单例模式,支持多线程,采用双重校验检索的方式,集成析构类,杜绝内存泄漏,稳定性好。 使用C++/Qt的朋友们可以了解一下。
不再废话,直接上代码。
2. 代码之路
头文件makelog.h
#include <QMutex>
#include <QObject>
class Makelog: public QObject
{
Q_OBJECT
public:
static Makelog* getInstance()
{
if (m_pInstance == NULL)
{
QMutexLocker mlocker(&m_Mutex); //双检索,支持多线程
if (m_pInstance == NULL)
{
m_pInstance = new Makelog();
}
}
return m_pInstance;
}
private:
Makelog(){}
Makelog(const Makelog&){}
Makelog& operator ==(const Makelog&){}
static Makelog* m_pInstance; //类的指针
static QMutex m_Mutex;
public:
class CGarbo //专用来析构m_pInstance指针的类
{
public:
~CGarbo()
{
if (m_pInstance != NULL)
{