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

【学习笔记】单例类模板

【学习笔记】单例类模板

一、单例类模板

以下为一个通用的单例模式框架,这种设计允许其他类通过继承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.xdnf.cn/news/908065.html

相关文章:

  • 深入理解二叉搜索树:原理到实践
  • libGL error
  • IDEA安装迁移IDEA配置数据位置
  • SQL进阶之旅 Day 19:统计信息与优化器提示
  • 10个成功案例剖析|融质AI创新实践
  • 【多线程初阶】阻塞队列 生产者消费者模型
  • Python备忘
  • CST人工电源网络阻抗计量校准
  • Python打卡训练营学习记录Day46
  • Arch-hyprland常用配置
  • 【Algo】常见组合类数列
  • 在centos7.9重置qcow2 root密码-qcow2忘记密码
  • 《0/1背包》题集
  • 【大厂机试题解法笔记】最差产品奖
  • 大模型编程助手-windsurf
  • 云服务器厂商机房是什么
  • CMOS图像传感器系列--(二)HDR之DAG技术
  • 跟我学c++中级篇——理解类型推导和C++不同版本的支持
  • 旅行商问题(TSP)的 C++ 动态规划解法教学攻略
  • python --导出数据库表结构(pymysql)
  • React从基础入门到高级实战:React 实战项目 - 项目四:企业级仪表盘
  • Profinet 协议 IO-Link 主站网关(三格电子)
  • DDD架构实战 领域层 事件驱动
  • Hive窗口函数RANGE BETWEEN详解:用法、场景与案例(附真实业务案例)
  • spring重试机制
  • 三菱PLC与西门子PLC如何实现485通讯?
  • 关于锁策略的简单介绍
  • echarts柱状图实现动态展示时报错
  • 电子电气架构 --- 什么是功能架构?
  • QT自定义资源管理器