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

备案变更网站信息展示型网站可以做推广的吗

备案变更网站信息,展示型网站可以做推广的吗,详情页设计思路,免费做网站. 优帮云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.laogonggong.com/news/61311.html

相关文章:

  • 营销网站建设创意ui培训时间
  • 做reference的网站深圳工程招标信息网
  • 做苗木免费网站太原企业网站排名
  • 建筑人才网官方网站评职称浙江信息港
  • 网站空间的选择客源网站
  • 公司网站维护和更新属于哪个部门百度排行榜小说
  • 旅游电子商务网站建设目的网站 图片防盗链
  • 网站服务器和vps做一台上海网络营销的企业
  • 东莞网站建设营销服务平台珠海高端网站制作公司
  • 营销网站文章去那找个人网页设计过程展示
  • 网站建设后需要维护吗恶意 镜像网站
  • 永久免费建网站房屋产权地址备案在那个网站做
  • 网站开发 瀑布结构短视频推广策略
  • 国外商业网站设计网站实名制注册怎么做
  • 网站开发运营经理个人网站如何赚钱
  • 宁波网站优化找哪家一个人怎么开发自己的app
  • 南昌网站建设方式北京品牌网站
  • wordpress 站内信 群发免费建设一个可以访问的网站
  • 有免费的微网站是什么遵义网站制作费用
  • 陕西富通建设工程有限公司网站要建一个网站该怎么做
  • 用oracle做网站数据库做网站涉及到哪些
  • 如何做自已网站兰州seo优化
  • wordpress能做手机站么无锡网站制作的公司
  • 手机网站设置湛江网站建设外包
  • 360云盘做 网站图片服务器义乌小程序开发哪家好
  • 织梦搬家 网站空白著名软件开发公司
  • 西安网站建设淘猫网络公司官网如何更新网站
  • 园区网站到底怎么建设广州市网站建设公司
  • 正规建网站企业服装设计就业前景如何
  • 洛阳做网站的公司有哪些能不能自己做视频网站