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

做网站用什么软件方便购物网站每个模块主要功能

做网站用什么软件方便,购物网站每个模块主要功能,无锡网络公司网站建设app微信公众号平,公司网页设计推广服务公司引言 前面两篇介绍了std::unique_ptr的自定义删除器以及如何优化删除器的使用。本文将介绍std::unique_ptr在使用过程中的一些“奇技淫巧”。 正文 删除器和std::move std::move是将对象的所有权转移给另一个对象,那如果通过std::move来转移带自定义删除器的std::…

引言

前面两篇介绍了std::unique_ptr的自定义删除器以及如何优化删除器的使用。
本文将介绍std::unique_ptr在使用过程中的一些“奇技淫巧”。

正文

删除器和std::move

std::move是将对象的所有权转移给另一个对象,那如果通过std::move来转移带自定义删除器的std::unique_ptr对象时,对应的删除器会不会一起转移呢?

我们通过示例定义奇偶数的删除器来介绍:

void deleteEvenNumber(int* pi)
{std::cout << "Delete even number " << *pi << '\n';delete pi;
}void deleteOddNumber(int* pi)
{std::cout << "Delete odd number " << *pi << '\n';delete pi;
}using IntDeleter = void(*)(int*);
using IntUniquePtr = std::unique_ptr<int, IntDeleter>;int main() {{IntUniquePtr p1(new int(42), deleteEvenNumber);IntUniquePtr p2(new int(43), deleteOddNumber);p1 = move(p2);}return 0;
}

上面这个示例中,如果把p1 = move(p2);代码注释掉,它的结果是:

Delete odd number 43
Delete even number 42

如果把代码还原回去后,结构是:

Delete even number 42
Delete odd number 43

从上面两个结果来看,std::move不仅把对象的所有权转移了,同时也转移了删除器。

删除器和reset()

std::unique_ptrreset()函数是用来重置智能指针的状态和其管理的对象。如果unique_ptr定义了删除器,然后调用reset()会出现什么效果呢?
还是用上面的示例,修改main()函数:

int main() {{IntUniquePtr p1(new int(42), deleteEvenNumber);p1.reset(new int(43));}return 0;
}

结果是:

Delete even number 42
Delete even number 43

这个结果就说明reset()不会对删除器产生任何影响。
但是这就产生一个问题,重置后的值并不是偶数,对应的删除器已经不符合需求了,但是reset()又只能传一个参数,没有通过reset()重置删除器,那要怎么解决呢?

方案一:

因为std::unique_ptr提供了get_deleter()函数来返回删除器的引用,所以我们可以通过该接口来手动修改删除器:

int main() {{IntUniquePtr p1(new int(42), deleteEvenNumber);p1.reset(new int(43));p1.get_deleter() = deleteOddNumber;}return 0;
}

运行结果:

Delete even number 42
Delete odd number 43

方案二:

第二种方案是用赋值来代替reset()

int main() {{IntUniquePtr p1(new int(42), deleteEvenNumber);p1 = IntUniquePtr(new int(43), deleteOddNumber);}return 0;
}

运行结果:

Delete even number 42
Delete odd number 43
http://www.bjxfkj.com.cn/article/108163.html

相关文章:

  • 如何做好公司网站建设wordpress站长
  • 网站接入协议及接入商资质对于高校类建设网站的要求
  • 爱站网长尾关键词挖掘工具下载怎么用ftp清空网站
  • 请输入搜索关键词上海百度seo优化
  • intitle 网站建设安徽两学一做网站
  • 建站经验 网站建设学院云南旅游
  • 国外域名注册哪个网站好wordpress如何做产品展示
  • 建设娱乐网站的要求上海工程造价咨询公司
  • 网站简繁体转换代码移动端下载app
  • 提高网站公信力 单仁wordpress图片远程
  • 致和网站建设南宁网络推广系统
  • 口碑好的丹徒网站建设网站建设工作简介
  • 如何使用万网主机建设网站linux 网站配置
  • 闸北微信网站建设怎样申请网站
  • 成都网站界面设计网站建站系统
  • 潍坊市网站网线制作心得
  • 网站规划与建设课程设计wordpress 仿百度
  • 自行车网站模板南京规划建设展览馆网站
  • asp sql做学生信息网站好听的公司名称
  • 苏州网站快速推广企业申请网站建设请示
  • 佛山网站优化有哪些wordpress更换域名还是之前链接
  • 网络营销的专业网站工程建设的概念是什么
  • 站酷官网做网站 写文章怎样加视频
  • 移动互联网综合实训实践报告东莞市长安镇网站制作优化
  • 模板网站大全行业电子网站建设
  • 平面设计与网站开发概述石家庄教育学会网站建设
  • 怎样做自己的销售网站上海注册公司注册在哪里比较好
  • 简易的在线数据库网站模板平面设计培训网
  • 三合一网站制作价格wordpress代码按钮
  • 上海网站建设治汇网络仿站小工具使用教程