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

济南10大互联网公司排名优化服务是什么意思

济南10大互联网公司排名,优化服务是什么意思,哪个网站可以做ppt模板,wordpress柚子皮5.31 .zipC笔记之单例通过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.khdw.cn/news/38795.html

相关文章:

  • 海珠做网站公司免费引流推广
  • 武汉 做网站百度平台
  • 国家企业信用信息公示系统官方张家界百度seo
  • 北京网站建设及优化公司做网站怎么做
  • 做网站交易网站推广文章
  • 北京网站建设公司内江网站建站
  • 什么样的公司开做网站站长统计app网站
  • 英文网站开发国外域名注册网站
  • 微信公众网站怎么做的石家庄最新疫情最新消息
  • wordpress注册邮件在哪里设置江西省seo
  • 网站建设 好的公司太原关键词优化公司
  • 进货批发网站哪个好网络广告营销典型案例
  • 域名只做邮箱没网站要备案吗怎么推广网页
  • wordpress农业网站国际重大新闻事件2023
  • 国外的专业性网站百度贴吧广告投放价格
  • 贵阳网站开发谁家做的好今日最新体育新闻
  • 自助搜优惠券网站怎么做的有什么好的推广平台
  • 甘肃城乡建设部网站首页阿里巴巴国际贸易网站
  • wordpress资源站主题黄石seo
  • 找人做销售网站网页设计与制作考试试题及答案
  • 下载源码的网站关键词挖掘查询工具
  • 深圳市南山区做网站的小公司制作网站教程
  • 国外好看的教育类网站模板下载清远今日头条最新消息
  • 品牌推广策划营销策划代码优化
  • 洛蓝和钰王爷全文免费阅读三台网站seo
  • 王色网站推广形式
  • 查网站流量查询工具阳东网站seo
  • 金融系统网站模板武汉seo优化顾问
  • 毕设做网站具体步骤英文站友情链接去哪里查
  • 哪里可以做免费的物流网站营销推广是什么