C++自用小轮子——单例模板
1.C++自用小轮子——线程安全队列
2.C++自用小轮子——单例模板
简介
记录开发时自用的小轮子:单例模板。
单例模板
提供了一个基于模板的单例模式的实现,代码如下:
#ifndef SINGLETON_H #define SINGLETON_H template <typename T> class CSingleton { public: static T& GetInstance() { static T instance; return instance; } protected: CSingleton() {} ~CSingleton() {} CSingleton(const CSingleton&) = delete; CSingleton& operator=(const CSingleton&) = delete; }; #endif // SINGLETON_H
使用方法
使用了奇异递归模板模式(Curiously Recurring Template Pattern, CRTP)。子类将自己作为模板参数传递给单例模板进行模板实例化,用做基类;同时在子类内部将基类声明为友元,这样才能在通过CSingleton
如此操作就可以使业务类(以CLogManager为例)具有单例属性,代码如下:
class CLogManager final : public CSingleton<CLogManager> { friend class CSingleton<CLogManager>; public: ... private: CLogManager(); ~CLogManager(); }; #endif // CLOGMANAGER_H int main() { CLogManager& p_log_instance = CLogManager::GetInstance(); ... }
合集:
C++小轮子
分类:
C++ / C++小轮子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架