当前位置: 首页 > article >正文

【学习笔记】单例类模板

【学习笔记】单例类模板

一、单例类模板

以下为一个通用的单例模式框架,这种设计允许其他类通过继承Singleton模板类来轻松实现单例模式,而无需为每个类重复编写单例实现代码。

// 命名空间(Namespace) 和 模板(Template)
// 命名空间用于将代码组织成逻辑组,避免不同模块间的命名冲突
// 泛型实现:T 可以是任意类型(如 int、std::string、自定义类)。编译时实例化:编译器会为每个使用的具体类型生成对应的代码。namespace core {
template <typename T>class Singleton {// 获取单例实例的静态方法public:static T& Instance() {static T instance{Token{}};return instance;}// 防止单例对象被复制或赋值,确保全局唯一性。Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton) = delete;// Token 结构体:一个空的标记类型,用于让派生类能够调用基类的构造函数(因为构造函数是受保护的)。受保护的构造函数:防止外部直接实例化Singleton,但允许派生类继承。protected:struct Token {};Singleton() = default;~Singleton() = default;
};

继承单例类模板实例:

class IpSourceManage : public core::Singleton<IpSourceManage>
{
public:IpSourceManage(Token){};~IpSourceManage(){};..........};

二、单例类标志

静态获取方法(如 Instance())

单例类必须提供一个静态方法来获取唯一实例,通常命名为 Instance()。

static MyClass instance;  // 静态实例(饿汉式)static MyClass& Instance() {static MyClass instance;  // 懒汉式(C++11后线程安全)return instance;
}

private 或 protected 构造函数

禁止外部直接实例化,只能通过 Instance() 方法创建对象。

class Nodes : public Node /*, public NodeMatch */ {public:private:Nodes();~Nodes();..........

禁用拷贝和赋值

delete 关键字:显式删除拷贝构造函数和赋值运算符,防止对象被复制。

MyClass(const MyClass&) = delete;              // 禁用拷贝构造
MyClass& operator=(const MyClass&) = delete;   // 禁用赋值
http://www.lryc.cn/news/2403058.html

相关文章:

  • 字符串加密(华为OD)
  • 口罩佩戴检测算法AI智能分析网关V4工厂/工业等多场景守护公共卫生安全
  • Double/Debiased Machine Learning
  • HarmonyOS Next 弹窗系列教程(4)
  • 【C】-递归
  • 飞马LiDAR500雷达数据预处理
  • Kerberos面试内容整理-在 Linux/Windows 中的 Kerberos 实践
  • 在 Allegro PCB Editor 中取消(解除或删除)已创建的 **Module** 的操作指南
  • 基于springboot的校园社团信息系统的设计与实现
  • nodejs里面的http模块介绍和使用
  • mamba架构和transformer区别
  • 嵌入式鸿蒙开发环境搭建操作方法与实现
  • 在 Spring Boot 中使用 WebFilter:实现请求拦截、日志记录、跨域处理等通用逻辑!
  • CSS预处理器:Sass与Less的语法和特性(含实际案例)
  • QT常用控件(1)
  • 明基编程显示器终于有优惠了,程序员快来,错过等一年!
  • 【计算机网络】非阻塞IO——select实现多路转接
  • Figma 中构建 Master Control Panel (MCP) 的完整设计方案
  • 什么是权威解析服务器?权威解析服务器哪些作用?
  • LeetCode--23.合并k个升序链表
  • ComfyUI 工作流
  • 使用glide 同步获取图片
  • 【推荐算法】NeuralCF:深度学习重构协同过滤的革命性突破
  • 负载均衡相关基本概念
  • 服务器中日志分析的作用都有哪些
  • 【React】useId
  • 【51单片机】0. 基础软件安装
  • 集成电路设计:从概念到实现的完整解析优雅草卓伊凡
  • 动态规划之网格图模型(二)
  • uniapp 集成腾讯云 IM 消息搜索功能