C++11出来后,里面新增加了好多好用的功能
下面的单例就是使用了C++11中的标准库中的mutex和unique_prt 进行内存管理的.
此单例模式不用担心内存的释放问题
#pragma once
#include <memory>
#include <mutex>
template <class T>
class Singleton
{
public:
typedef typename std::unique_ptr<T> handleType;
public:
static handleType& GetInstance()
{
if (!ms_inst)
{
std::mutex m;
std::lock_guard<std::mutex> lock(m);
ms_inst.reset(new T); //不要写成了ms_inst->reset(new T);
}
return ms_inst;
}
//需要使用protected 关键字,不能使用private
protected:
Singleton(){}
Singleton(const Singleton& inst){}
Singleton& operator=(const Singleton& inst){}
private:
static handleType ms_inst;
};
//下面的初始化需要加 typename
template<class T>
typename Singleton<T>::handleType Singleton<T>::ms_inst;
欢迎访问作者的helloworld的个人博客:
https://www.helloworld.net/jiulu
同时也可以加作者的微信:daitukeji
也可以扫下面的二维码添加

注:设计模式交流学习群 632945466 欢迎所有热爱技术的大牛,小菜,一起学习讨论进步提高,欢迎随时批评指正
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了