C++单例模式

2023-12-05

#pragma once

namespace utility
{
	// 需要拼接一下命名空间 utility
#define SINGLETON(x) (friend class utility::##Singleton<x>);

	template <typename T>
	class Singleton
	{
	public:
		static T* instance()
		{
			if (m_instance == nullptr)
			{
				m_instance = new T();
			}
			return m_instance;
		}
	private:
		Singleton(){}
		Singleton(const Singleton<T>&);
		Singleton<T>& operator = (const Singleton<T>&);
		~Singleton(){}
	private:
		static T* m_instance;
	};

	template <typename T>
	T* Singleton<T>::m_instance = nullptr;
}
#pragma once
#include "Singleton.h"
#include <iostream>
#include <string>

class A
{
	// 声明为友元类Singleton才能创建A的实例
	// friend class utility::Singleton<A>;
	SINGLETON(A);
public:
	void show()
	{
		std::cout << __FUNCTION__ << m_name << std::endl;
	}
private:
	A() : m_name(" name"){}
	A(const A&);
	A& operator = (const A&);
	~A(){}
private:
	std::string m_name;
};
#include "A.h"
#include "Singleton.h"
using namespace utility;

int main()
{
	//1. 类A构造为私有(无法在模板单例类中创建instance实例)使用友元类解决
	//2. 对于多线程可能创建多个实例的问题(在主线程中先创建规避掉那种情况即可)
	Singleton<A>::instance();

	A* instanceA1 = Singleton<A>::instance();
	A* instanceA2 = Singleton<A>::instance();

	std::cout << "A1: " << instanceA1 << std::endl;
	std::cout << "A2: " << instanceA2 << std::endl;

	instanceA1->show();
	instanceA2->show();

	getchar();
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++单例模式 的相关文章

  • 打击垃圾邮件机器人

    我的网站中有 C 表单 希望防止垃圾邮件机器人填写它 诀窍是 我想避免 CAPTHA 或任何其他用户输入 以避免丢失单个注册 以下是我心中的一些技巧 隐藏输入栏 问题 这还有效吗 跟踪时间 从第一个用户输入 关注名字 到发布表单 人类需要
  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • 使用 JSON 格式正确配置 NLog 到 IHostBuilder

    我有以下代码 应该接受 NLog 的 JSON appsettings 配置 然后使用它来创建 NLog LogFactory 这个 NLog 工厂应该被传递到 MyService 类中 以便在那里创建一个记录器 class Program
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 使用 size_t 值反向遍历向量

    我想以相反的方向遍历向量的值 如您所知 向量的大小为 size t 当我使用以下代码时 for size t r m size 1 r gt 0 r x r f r for size t c r 1 c lt m size c x r m
  • WinForms - 表单大小错误

    我们有以下代码 private void MainForm Shown object sender EventArgs e RepositionForm private void RepositionForm Rectangle rect
  • C++:初始化静态字符串成员

    我在 C 中初始化静态字符串成员时遇到一些问题 我有几个类 每个类都包含几个表示 id 的静态字符串成员 当我通过调用静态函数初始化变量时 一切都很好 但是 当我想为一个变量分配另一个变量的值时 它仍然保留空字符串 这段代码有什么问题 st
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • EWS - 给予预约,获取预约的所有者副本

    在 EWS 中进行预约后 是否可以获得所有者的副本 例如 如果我登录为user1 我有user1创建的约会的副本user2 我有冒充权 我要编辑user2预约的副本 我怎样才能获得user2 s copy 您可以使用 PidLidClean
  • char* argv[] 在 c/c++ 中如何工作? [复制]

    这个问题在这里已经有答案了 我知道它用于使用命令行中的参数 但我没有得到声明 字符 argv 它是否意味着指向 char 数组的指针 如果是的话为什么没有大小 如果不是动态数组 就不需要有大小吗 我做了一些研究 发现有人说它会衰减为 cha
  • 为什么我不能对普通变量进行多态?

    我是一名Java程序员 最近开始学习C 我对某事感到困惑 据我了解 在 C 中 要实现多态行为 您必须使用指针或引用 例如 考虑一个类Shape与实施的方法getArea 它有几个子类 每个子类都以不同的方式重写 getArea 然后考虑以
  • 修改代码以从 Windows 中的 PE 可执行文件检索双重签名信息?

    我已经挣扎了一段时间想要修改这段代码示例 https support microsoft com en us help 323809 how to get information from authenticode signed execu
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 从 STL 列表中删除项目

    我想创建一个函数 如果符合特定条件 则将项目从一个 STL 列表移动到另一个列表 这段代码不是这样做的方法 迭代器很可能会被擦除 函数失效并导致问题 for std list
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include

随机推荐

  • 大数相乘,限制:不可用 BigInt

    大数相乘 限制 不可用 BigInt 大数相乘 限制 不可用 BigInt 例如 输入 a 11111111111111111111 b 22222222222222222222 返回 246913580246913580241975308
  • 140-基于stm32单片机智能晾衣杆控制系统Proteus仿真+源程序

    资料编号 140 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 光敏传感器 蜂鸣器 LED灯 制作一个基于stm32单片机智能晾衣杆控制系统Proteus仿真 2 通过光敏传感器
  • 通过mount命令挂载另一台linux服务器的目录到本机

    说明 本次操作的目的是将另一台机器 192 168 1 100 的 backup目录挂载到本机的新建目录 back 1 在被挂载目录的机器上开启NFS服务并编辑 etc exports文件 1 1 查看是否已安装nfs 查看知道已安装 rp
  • 使用docker切换任意版本cuda使用GPU

    1 现存问题 在主机上运行很多下载来的机器学习代码时 这些大都运行在不同版本的tensorflow gpu或者pytorch等的包下的 但是 运行代码的过程中 存在匹配的问题 1 不同的版本的tensorflow gpu或pytorch对c
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • 【经典蓝牙 SSP协议介绍】

    协议定义 SSP Secure Simple Pairing 安全简单配对 协议目的 1 为用户简化配对过程 2 维护或提高蓝牙无线技术的安全性 安全性指两点目标 1 被动窃听保护 2 中间人 MITM 攻击保护 协议流程 下面说下我认为的
  • 133-基于stm32单片机停车场车位管理系统Proteus仿真+源程序

    资料编号 133 一 功能介绍 1 采用stm32单片机 4位数码管 独立按键 制作一个基于stm32单片机停车场车位管理系统Proteus仿真 2 通过按键进行模拟车辆进出 并且通过程序计算出当前的剩余车位数量 3 将剩余的车位数量显示到
  • 【网络安全】网络安全的标准和规范

    网络安全的标准和规范是网络安全领域的重要组成部分 它们为网络安全提供了技术依据 规定了网络安全的技术要求和操作方式 帮助我们构建安全的网络环境 下面 我们将详细介绍一些主要的网络安全标准和规范 以及它们在实际操作中的应用 一 ISO IEC
  • Elasticsearch-Kibana使用教程

    1 索引操作 1 1创建索引 PUT employee settings index refresh interval 1s number of shards 1 max result window 10000 number of repl
  • el-table 删除某行数据时 删除语句包含行号/序号

    el table可展示每行数据的序号列 在点击删除按钮的时候 会获取到该行所有的数据值 但是要想删除时提示到具体的序号 如 是否确认删除序号为1的数据项 我是这样写的 删除按钮操作 handleDelete row index用来存储该项数
  • Android中的Banner轮播图的使用

    目录 效果图 介绍 3 XML中banner常用的属性 使用 导入依赖 xml文件 活动代码 本文在碎片中使用 效果图 Banner效果图 介绍 Banner轮播图是一种常见的移动应用界面设计元素 用于展示多张图片或广告 并支持自动切换 它
  • “我,大三,寒假靠Python兼职赚了7567.6元。”

    目前很多同学已经结束期末考试 进入寒假 有很多同学问我 有什么兼职可以线上做的吗 最好还能提高自己的一些技能 以前周末或假期经常去当服务员 导购 发传单之类 最后发现 只是在无畏地消磨自己的时间 对本身技能并不能得到任何提高 所以 不想再重
  • 【王道】计算机组成原理笔记 第四章 指令系统

    前三章讲的分别是概述 运算器和存储器 接下来的第四章和第五章内容都是关于控制器的 我们知道 控制器通过指令来控制计算机 所以这一章介绍指令 下一章介绍控制器如何通过指令来控制计算机 4 1 1 指令格式 1 指令 操作码和地址码 1 1 指
  • linux内核机制之设备树

    设备树 Device Tree 基本概念及作用 在内核源码中 存在大量对板级细节信息描述的代码 这些代码充斥在 arch arm plat xxx和 arch arm mach xxx目录 对内核而言这些platform设备 resourc
  • 视频压缩怎么操作?看完这篇你就知道了

    亲们 你们是否经常为了视频文件过大而烦恼呢 别担心 现在有了视频压缩软件 我们可以轻松解决这个问题 视频压缩软件不仅在日常生活中大放异彩 也在工作和娱乐中发挥着重要的作用 无论是想要分享视频给朋友 还是上传到社交平台或视频网站 视频压缩软件
  • 企业如何为自己的未来做准备?

    如果企业不为未来做准备 就要为出局做准备工作 德鲁克 随着市场需求的不断变化 企业面对着激烈的市场竞争 其该如何为自己的未来做准备 具体企业面临着 建立竞争优势 管理多元化员工队伍 应用新的信息系统与技术 首先 企业在市场竞争中想要建立自己
  • 强化元学习算法在机器人控制中的应用研究

    随着人工智能和机器学习的快速发展 强化学习作为一种重要的机器学习方法 被广泛应用于机器人控制领域 然而 传统的强化学习算法在面对复杂任务和多样化环境时往往需要大量的训练时间和样本 为了解决这个问题 强化元学习算法应运而生 本文将探讨强化元学
  • 微信小程序自定义数据实现级联省市区组件

    前言 在微信小程序中 官方文档提供的省市区组件 可以让用户更加方便快捷地选择省市区 但是官方提供的组件有一个缺点 无法自定义数据 但如果项目中需要使用自己的数据 显然就得寻找其它的组件实现 官方组件 优点 使用官方组件具有稳定性和兼容性 可
  • 137-基于stm32单片机智能保温杯控制装置Proteus仿真+源程序

    资料编号 137 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DS18B20传感器 电机 制作一个基于stm32单片机智能保温杯控制装置Proteus仿真 2 通过DS18b20传感器检测当前保温杯水的温度 并且
  • C++单例模式

    pragma once namespace utility 需要拼接一下命名空间 utility define SINGLETON x friend class utility Singleton