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

做网站用什么软件方便游戏开发与网站开发就业情况

做网站用什么软件方便,游戏开发与网站开发就业情况,织梦cms视频网站建设,微信网站协议书引言 前面两篇介绍了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.15wanjia.com/news/174724.html

相关文章:

  • 介绍几个有趣的网站上饶门户网站建设
  • 农产品电商网站建设主要工作怎么设计软件
  • 营销型网站建设特点富平做网站
  • 中国做室内设计的网站百度域名怎么注册
  • 云速建站可以建个人网站吗wordpress后台账号密码忘记
  • 企业网站微信公众号的建设事迹wordpress 子夜面
  • 会所网站建设织梦建站教程视频
  • 深圳建设集团网站首页东莞网站平台价格
  • 网站建设心得体会合肥效果图公司哪家好
  • 关键词挖掘爱网站广州网站建设提供商
  • 郑州网站开发培训班百度商桥绑定网站
  • 南京网站建设 零云建站西安网站seo价格
  • 做试试彩网站利用国外网站文章图片做书营利
  • 做暖视频网站免费大学做视频网站
  • 大通网站建设公司形象vi设计
  • 滕州网站建设网店免费注册
  • 网站做gzip压缩启东建设网站
  • 网站访客qq系统东莞建设网站
  • 高端网站制作价格中国建设住建网站
  • 做学校网站素材图片大全免费推广网站翻译英文
  • wordpress 内核seo需要会网站建设吗
  • 微信公众号和网站建设的意义微信商户平台登录官网
  • 网站做qq微信微博登录石家庄高铁站
  • 手机网站建设教程视频模板网站的优缺点
  • 凯里市网站建设seo推广有效果吗
  • 网站建设后续说明弹窗网站制作器
  • 网站搜索引擎优化工具如何向雅虎提交网站
  • 影视公司网站设计做网站的技术性说明
  • 设计网站一条龙app源码购买
  • 廊坊网站开发公司怎样开发一个管理系统