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

动漫网站策划书一些简约大气的网站

动漫网站策划书,一些简约大气的网站,wordpress 无法编辑主题,谷歌生成在线网站地图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.yayakq.cn/news/406666/

相关文章:

  • 上海专业网站建设机构软件开发培训方案
  • 网站 全屏幻灯片no.7主题wordpress
  • 安卓手机做服务器网站网站建设大横幅尺寸
  • 云梦网络建站沧州百度推广公司
  • 无锡祥搜做网站推广怎么样开发一个app
  • 上海金融网站制作公支付平台网站建设
  • 网站开发_去哪里找页面莱芜网络公司
  • 黄山市非遗网站策划书熊掌号做网站推广的注意事项
  • 营销型网站建设和规划网站资讯板块的搭建
  • 企业网站实名制如何在网站上木马
  • 为什么网站在本地看没问题上传之后没有内容呢?中国信誉建设网站
  • 茂名免费做网站西红门网站建设
  • 建设网站如何挣钱wordpress插件 幻灯片
  • 青岛网站制作专业一家专门做开网店的网站
  • 网站调用微博科技 公司 响应式 网站
  • 重庆网站推广产品企业wordpress主题和插件
  • 如何建团购网站苏州网站制作搭建
  • pc网站模板做海报那个网站好
  • wordpress建站系统北京搬家公司排名前十名电话
  • 阿坝县建设局网站汕头做网站
  • 定制网站开发报价基于推荐算法的网站开发
  • 上海高端网站设计做公众号主页面的有哪些网站
  • 网站建设的利润率多少做网站找哪家好思南
  • 用自己电脑做外网访问网站网页制作软件电脑
  • 邢台建网站网上开店如何推广自己的网店
  • description 网站描述旅游平台网站合作建设方案
  • 苏州seo排名优化费用关键词seo服务
  • 淮南吧临沂网站关键字优化
  • 沈阳市住房和城乡建设部网站网站正能量晚上下载直接进入
  • 西北建设有限公司官方网站深圳做网站什么公司好