单例模式
- 构造函数的调用 析构函数的调用,防止内存泄漏
- 多线程安全
单例模式防止外部调用构造函数创建对象 构造函数和析构函数私有化防止外部调用
宏实现
- 模板实现
懒汉式
调用时创建单例对象
延迟加载
比如加载配置文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15template<class T>
class Singleton{
private:
static T* m_instance;
public:
static T* getInstance(){
if(m_instance == nullptr){
m_instance = new T();
}
return m_instance;
}
};
template<typename T>
T* Singleton<T>::m_instance=nullptr;
饿汉式
应用程序启动时创建单例对象1
2
3
4
5
6
7
8
9
10
11template<typename T>
class Singleton{
private:
static T m_instance;
public:
static T* getInstance(){
return &m_instance;
}
};
template<typename T>
T Singleton<T>::m_instance;