1.第一种:

 1 template <typename T>
 2 class CSingletonT
 3 {
 4 public:
 5 
 6     virtual ~CSingletonT(){}
 7 
 8 protected:
 9 
10     CSingletonT(){}
11 
12 public:
13 
14     static T &Instance()
15     {
16         static T instance;
17         return instance;
18     } 
19 };

2.第二种:

 1 class CSingletonObject
 2 {
 3 public:
 4 
 5     static T &Instance()
 6     {
 7         return s_object;
 8     }
 9 
10     virtual ~CSingletonObject(){}
11 
12 protected:
13 
14     CSingletonObject(){}
15     
16 private:
17 
18     static CSingletonObject s_object;
19 }
20 
21 CSingletonObject CSingletonObject::s_object;

3.两种编写方式其实对程序有着比较重要的影响,第一种是在调用该类的Instance方法后,对象才被创建出来,而第二种,是程序启动后,就直接创建出来。
4.第一种单件模式在多线程(之前没有被任何单线程调用过)调用的时候,会发生内存错误问题,原因在因都在调用Instance方法时,第一次调用会创建内存,而有可能在对象没有完全创建完成时,第二次调用Instance方法已经开始并且到了 return instance; 的步骤,所以在使用对象方法数据成员时就会出现内存异常。
5.第一种单件编写方案比较合适需要初始化的对象(容易编写,继承一个类即可);第二种单件编写方案使用性更广,无过多限制(只能手动编写,无捷径)。

转载于:https://www.cnblogs.com/yejiansnake/archive/2011/03/15/Singleton.html

C++两种编写单件模式方法对比相关推荐

  1. 两种内存池管理方法对比

    一.问题背景 最近在调试ambiq apollo3的蓝牙时,其使用了ARM Cordio WSF的蓝牙协议栈.通过学习wsf_buf.c的实现,看到了一种不同于固定大小内存块的内存池管理方式.它使用了 ...

  2. 两种编写代码风格方式对比

    一.简洁版本,便于阅读,不方便移植 //led.h #define LED1 PBout(0) #define LED2 PBout(1) #define LED3 PBout(5) void LED ...

  3. Asp.Net Ajax的两种基本开发模式

    Asp.Net Ajax的两种基本开发模式 引言 最近花了一些时间,将微软Asp.Net官方的Ajax视频全部看了一遍,地址是http://www.asp.net/learn/ajax-videos/ ...

  4. 一文带你了解两种Transformer文字识别方法

    摘要:受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR和 SRN. 当前的文本行识别器为拥有更强的序列语义能力,模型多采用 ...

  5. 工作流引擎JFlow与activiti 对比分析(一)5种基本控制流模式的对比

    为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的.客观的对比. 首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛 ...

  6. 归一化mysql函数_数据归一化和两种常用的归一化方法

    数据归一化和两种常用的归一化方法 一.总结 一句话总结: min-max标准化:x* =(x-min)/(max-min):新数据加入,需重新计算max和min Z-score标准化:x* =(x-μ ...

  7. 利用网络信息减少因果推断中的confounding bias--结合两种思路的新方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 本期AI TIME PhD专场,我们有幸邀请到了来自亚利桑那州立大学的博士生郭若城,为我们带来他的精彩分享--利用网络信息减少因果推断中 ...

  8. 数据归一化和两种常用的归一化方法

    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可 ...

  9. 嵌入式系统实验——【玄武F103开发板】顺序点亮4小灯和4小灯全亮两种点亮模式、并使用KEY1控制切换点亮模式

    一.实验目的 顺序点亮4小灯和4小灯全亮两种点亮模式.并可以使用KEY1控制切换点亮模式 二.实验思路: (一)示例程序分析 #include "stm32f10x.h" type ...

最新文章

  1. How good software makes us stupid?
  2. 洛谷P1474 [USACO 2.3]货币系统 Money Systems [2017年4月计划 动态规划04]
  3. html文件 运行php文件路径问题,HTML_基础 HTML之目录问题(相对路径和绝对路径区别),相对路径-以引用文件之网页所 - phpStudy...
  4. mysql binlog2sql_MySQL数据闪回 binlog2sql
  5. 纵横免root框架打不开应用怎么办_很好用的软件多开神奇安卓欧皇十框架!!!...
  6. 快速入门容器服务,创建Kubernetes集群
  7. 知道经纬度坐标怎么计算两点间距离_【我的时间拣屎】亚里士多德:地球是圆的,我计算了地球的圆周...
  8. mysql8.0.11创建用户报错_mysql8.0.11修改root密码,其他创建用户和删除用户
  9. Python字典的操作与使用
  10. Alibaba Cloud Linux 2 LTS OS 启动优化实践 | 凌云时刻
  11. JAVA刷视频代码,Java+adb命令实现自动刷视频脚本
  12. E24系列电阻 阻值表
  13. 数据中台外部演示脚本
  14. docker部署sftp,连接报algorithm negotiation fail错误
  15. 上位机和FPGA开发板--串口通信实验
  16. 为知笔记 | 3 分钟创建格式美美的笔记
  17. 分布式文件存储:FastDFS简单使用与原理分析
  18. 三极管构成的电流负反馈放大器
  19. 复制mysql数据表文件MYI,MYD,frm 后问题记录
  20. MPC+HSM造就了安全的数字托管人

热门文章

  1. Python for循环中使用index索引
  2. centos7添加用户并授权root权限
  3. IDEA离线使用本地maven仓库
  4. The word is not correctly spelled问题
  5. springMVC中获取request 对象
  6. Missing artifact com.sun tools.jar 1.5.0 system 解决方法
  7. svn\pristine\0a\0a66a6f1e12c54c3a0c3885a2bf5042977071358.svn-base系统找不到指定路径
  8. mysql 2100_mysql增量备份与恢复实战
  9. 【初赛】排列组合的一点笔记
  10. 如何制作扫描版的文档