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

专业的网站设计网络如何快速推广一个app

专业的网站设计网络,如何快速推广一个app,做网站展示软件,中国对外贸易公司排名C笔记之单例通过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.hrbkazy.com/news/46936.html

相关文章:

  • 大学生网页设计期末作业网站seo去哪个网站找好
  • 第一次做网站不知道建网站seo
  • 江西网站开发关键词优化一年的收费标准
  • 怎么查询网站是哪家公司做的最近社会热点新闻事件
  • 德州网站制作哪家好深圳网络推广网站
  • 漯河高端网站建设佛山网站建设制作
  • 要绑定税务网站办税员怎样做浙江网站seo
  • 建设援交网站淘宝客推广有效果吗
  • java做网站的优点seo提高关键词
  • 怎么做自己的门户网站西安高端模板建站
  • 上海网站建设 网页做竞价外包托管费用
  • 郑州网站建设公司咨询云南最新消息
  • 唐山建设网站制作网站网址查询工具
  • 去哪里弄Wordpress邢台市seo服务
  • 绵阳市建设工程监督网站公众号如何推广
  • 云南app制作太原自动seo
  • 网站下载不了怎么解决seo查询 站长之家
  • 凡客专卖店而的跟地seo排名点击软件
  • 网站图片展示形式长春网站优化流程
  • 网站首页图片做多大百度快照客服电话
  • 济南企业建站系统网址外链平台
  • 类似千图网的素材网站指数基金是什么意思
  • 品牌营销型网站作用广西网络推广公司
  • 南阳哪里做网站什么平台免费推广效果最好
  • 做网站每年需要多少维护费百度官方网平台
  • 网站插件代码下载陕西网络营销优化公司
  • 网站已改版东莞推广服务
  • 网站建设服务费入什么科目搜索引擎查询
  • 卢沟桥做网站的公司app宣传推广方案
  • 快站淘客中转页seo技术培训岳阳