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

专业的网站设计网络广州百度seo代理

专业的网站设计网络,广州百度seo代理,网页小游戏代码,佳缘交友网站源码phpC笔记之单例通过GetInstance传递参数 code review! 文章目录 C笔记之单例通过GetInstance传递参数例1.普通指针的单例例2.结合智能指针和std::call_once例3.编译不通过的错误例子,在GetInstance内不可以使用std::make_shared来创建对象 例1.普通指针的单例 运行 …

C++笔记之单例通过GetInstance传递参数

code review!

文章目录

  • C++笔记之单例通过GetInstance传递参数
    • 例1.普通指针的单例
    • 例2.结合智能指针和std::call_once
    • 例3.编译不通过的错误例子,在GetInstance内不可以使用std::make_shared来创建对象

例1.普通指针的单例

在这里插入图片描述

运行
在这里插入图片描述

代码

#include <iostream>
#include <string>class Singleton {public:// 获取单例实例的静态函数,可以传递构造函数所需的参数static Singleton *GetInstance(const std::string &value) {if (!instance) {instance = new Singleton(value);}return instance;}void PrintValue() {std::cout << value << std::endl;}private:// 私有构造函数,防止直接实例化Singleton(const std::string &val) : value(val) {}static Singleton *instance;std::string value;
};// 初始化静态成员变量
Singleton *Singleton::instance = nullptr;int main() {Singleton *instance1 = Singleton::GetInstance("Instance 1");instance1->PrintValue(); // 输出:Instance 1Singleton *instance2 = Singleton::GetInstance("Instance 2");instance2->PrintValue(); // 输出:Instance 1,因为单例已经创建,不会再次创建新实例return 0;
}

例2.结合智能指针和std::call_once

在这里插入图片描述

使用 std::shared_ptrstd::call_once 来实现单例模式,并避免了调用私有构造函数:
在这个示例中,通过直接使用 new Singleton(value) 来创建 std::shared_ptr<Singleton> 的实例,这样就能够调用私有的构造函数。

运行
在这里插入图片描述

代码

#include <iostream>
#include <memory>
#include <string>
#include <mutex>class Singleton {
public:// 获取单例实例的静态函数,可以传递构造函数所需的参数static std::shared_ptr<Singleton> GetInstance(const std::string& value) {std::call_once(initFlag, [&]() {instance = std::shared_ptr<Singleton>(new Singleton(value));});return instance;}void PrintValue() {std::cout << value << std::endl;}private:// 私有构造函数,防止直接实例化Singleton(const std::string& val) : value(val) {}static std::shared_ptr<Singleton> instance;static std::once_flag initFlag;std::string value;
};// 初始化静态成员变量
std::shared_ptr<Singleton> Singleton::instance = nullptr;
std::once_flag Singleton::initFlag;int main() {std::shared_ptr<Singleton> instance1 = Singleton::GetInstance("Instance 1");instance1->PrintValue(); // 输出:Instance 1std::shared_ptr<Singleton> instance2 = Singleton::GetInstance("Instance 2");instance2->PrintValue(); // 输出:Instance 1,因为单例已经创建,不会再次创建新实例return 0;
}

例3.编译不通过的错误例子,在GetInstance内不可以使用std::make_shared来创建对象

在这里插入图片描述

编译报错:
在这里插入图片描述

在 C++ 中,std::make_shared 会调用构造函数来创建对象,但是由于构造函数是私有的,会导致编译错误。

http://www.ds6.com.cn/news/50077.html

相关文章:

  • 网站建设中需求分析说明书seozou是什么意思
  • 网站做系统做排名靠谱吗bing搜索引擎国内版
  • 动漫制作专业学校前十名seo公司推荐推广平台
  • 惠州做网站公司哪家好seo顾问是什么职业
  • 网站导航条背景图片数据分析报告
  • 百度网页版主页链接长沙正规竞价优化推荐
  • wordpress搜索限制频率免费seo
  • 大兴快速网站建设公司百度指数的功能
  • 做美篇发网站湖北权威的百度推广
  • 新闻联播直播 今天文大侠seo
  • 做百度移动网站优集合竞价口诀背熟6句
  • 商品详情页怎么制作seo搜索引擎优化师
  • wordpress 付费文章百度seo规则
  • 网站建设情况总结上海百度推广平台
  • 共享办公商业租赁网站模板宁德市属于哪个省
  • 网络营销的功能是什么?郑州网站制作选择乐云seo
  • 成都公园城市建设局网站google手机官网
  • 广州网站制作(信科网络)深圳做推广哪家比较好
  • 静态网站怎么做留言板seo网站推广批发
  • 专业网站建设制作价格来几个关键词兄弟们
  • 主持人做的化妆品网站网络营销策划书
  • 北京做网站s谷歌浏览器 安卓下载
  • 临城网站建设免费培训机构
  • 网站建设的三网合一国内新闻最新5条
  • 装修网站建设seo优化信
  • ppt模板免费下载的网站百度seo点击器
  • 想做电商带货怎么入手湖南企业seo优化报价
  • 个人在国外网站做电商查排名的网站
  • 青岛建设大学招聘信息网站2022社会热点事件及看法
  • .net wap网站模板最基本的网站设计