全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++ 单例模式的详解及实例

C++ 单例模式的详解及实例

1.什么叫单例模式?

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。
通过单例模式, 可以做到:

(1)确保一个类只有一个实例被建立
(2)提供了一个对对象的全局访问指针
(3)在不影响单例类的客户端的情况下允许将来有多个实例

2.怎样实现单例模式

一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。

3.具体实现

(1)最简单的单例模式(懒汉模式)

懒汉模式:懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法,顾名思义,懒汉么,很懒的,配置文件的实例直到用到的时候才会加载。

class SiglenTon
{
public:
  static SiglenTon *GetInstence()
  {
    if( p == NULL)
    {
      p = new SiglenTon();
    }
    return p;
  }
private:
  SiglenTon()
  {
    cout<<"SiglenTon()"<<endl;
  }
  static SiglenTon *p;
};
SiglenTon *SiglenTon::p = NULL;
int main()
{
  SiglenTon *p = SiglenTon::GetInstence();
  return 0;
}

(2)第一种方式没有考虑到线程安全

class SiglenTon //(线程安全的饿汉模式)
{
public:
  static SiglenTon *GetInstence()
  {
    cout<<"static SiglenTon *GetInstence()"<<endl;
    pthread_mutex_lock(&mutex);
    if( p == NULL)
    {
      pthread_mutex_lock(&mutex);
      p = new SiglenTon();
      pthread_mutex_unlock(&mutex);
    }
    pthread_mutex_unlock(&mutex);
    return p;
  }

private:
  SiglenTon()
  {
    cout<<"SiglenTon()"<<endl;
  }
  static SiglenTon *p;
};
SiglenTon *SiglenTon::p = NULL;



int main()
{
  SiglenTon *p = SiglenTon::GetInstence();
  SiglenTon *p1 = p->GetInstence();

  return 0;
}

(3)饿汉模式(饿汉模式本身就是线程安全的)

class SiglenTon
{
public:
  SiglenTon *GetInstence()
  {
    if( p == NULL)
    {
      return p;
    }
  }
private:
  SiglenTon()
  {
    cout<<"SiglenTon()"<<endl;
  }
  static SiglenTon *p;
};

以上就是对C++ 中单例模式的讲解,如有疑问请留言或者到本站社区进行交流讨论,感谢阅读,希望帮助到大家,谢谢大家对本站的支持!


# C++  # 单例模式  # 实现单例模式  # C++单例模式详解  # C++单例模式的几种实现方法详解  # C++单例模式的懒汉模式和饿汉模式详解  # C++实现单例模式的方法  # C++设计模式之单例模式详解  # C++实现单例模式的自动释放  # 详解C++实现线程安全的单例模式  # C++线程安全的单例模式讲解  # C++ 单例模式的几种实现方式研究  # C++单例模式的实例详解  # C++ 超详细深入分析单例模式  # 配置文件  # 有一个  # 加载  # 鼠标  # 多个  # 有很多  # 如有  # 才会  # 一台  # 考虑到  # 只有一个  # 只需要  # 什么叫  # 顾名思义  # 管理器  # 谢谢大家  # 提供一个  # 最简单  # 第一种  # 可以做到 


相关文章: 天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何选择CMS系统实现快速建站与SEO优化?  Android自定义listview布局实现上拉加载下拉刷新功能  大型企业网站制作流程,做网站需要注册公司吗?  建站之星后台密码如何安全设置与找回?  广州美橙建站如何快速搭建多端合一网站?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何快速搭建个人网站并优化SEO?  高防服务器如何保障网站安全无虞?  实现虚拟支付需哪些建站技术支撑?  如何在阿里云香港服务器快速搭建网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  招贴海报怎么做,什么是海报招贴?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  高性能网站服务器配置指南:安全稳定与高效建站核心方案  建站之星安装后如何自定义网站颜色与字体?  建站上传速度慢?如何优化加速网站加载效率?  宝塔面板如何快速创建新站点?  建站主机数据库如何配置才能提升网站性能?  建站主机SSH密钥生成步骤及常见问题解答?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何在腾讯云免费申请建站?  如何在IIS管理器中快速创建并配置网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  代购小票制作网站有哪些,购物小票的简要说明?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  建站之星客服服务时间及联系方式如何?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  建站主机选购指南:核心配置与性价比推荐解析  广州营销型建站服务商推荐:技术优势与SEO优化解析  如何在阿里云ECS服务器部署织梦CMS网站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  建站为何优先选择香港服务器?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何在阿里云域名上完成建站全流程?  网站app免费制作软件,能免费看各大网站视频的手机app?  济南网站制作的价格,历城一职专官方网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  小建面朝正北,A点实际方位是否存在偏差?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  广州商城建站系统开发成本与周期如何控制?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何做网站制作流程,*游戏网站怎么搭建?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。