引言
本文章只适用于简单的单例模式。由于本人也没有深究过。下面直接上代码。
示例
单例模式,就是只能创建一个该类的对象,因为这样其构造函数是私有的,外部只能通过接口获得创建的该类唯一的对象。
#ifndef CONFIG_H
#define CONFIG_H
#include <QMutex>
class Config
{
private:
Config();
public:
static Config *getInstance();
private:
static Config * m_config;//创建的指向对象的指针
static QMutex m_mutex;//互斥锁
};
#endif // CONFIG_H
下面是该类的定义
#include "config.h"
#include <QMutexLocker>
Config *Config::m_config = nullptr;
QMutex Config::m_mutex;
Config::Config()
{
}
Config *Config::getInstance()
{
if (m_config == nullptr) {//双重检测
static QMutexLocker mutexLocker(&m_mutex);
if (m_config == nullptr) {
m_config = new Config;
return m_config;
}
}
return m_config;
}
类中声明的静态变量需要在类外定义。相关staitic的使用可以参考:
https://www.cnblogs.com/stevenshen123/p/11555758.html。