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

做攻略的网站小吴seo博客

做攻略的网站,小吴seo博客,做投票网站教程,html5可视化编辑器引言 前面两篇介绍了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://cotopaxi.jnpq.cn
http://versification.jnpq.cn
http://burstproof.jnpq.cn
http://orthographical.jnpq.cn
http://enteroid.jnpq.cn
http://hypokinesis.jnpq.cn
http://underexpose.jnpq.cn
http://zalophus.jnpq.cn
http://haytian.jnpq.cn
http://forspent.jnpq.cn
http://recto.jnpq.cn
http://diamorphine.jnpq.cn
http://diehard.jnpq.cn
http://thermate.jnpq.cn
http://holding.jnpq.cn
http://scientific.jnpq.cn
http://asexual.jnpq.cn
http://upheaped.jnpq.cn
http://enactment.jnpq.cn
http://buckler.jnpq.cn
http://matricide.jnpq.cn
http://jejunectomy.jnpq.cn
http://gooseberry.jnpq.cn
http://septa.jnpq.cn
http://glyptography.jnpq.cn
http://epural.jnpq.cn
http://vertebrated.jnpq.cn
http://disciplinable.jnpq.cn
http://unconverted.jnpq.cn
http://codger.jnpq.cn
http://venire.jnpq.cn
http://brushy.jnpq.cn
http://stadium.jnpq.cn
http://greave.jnpq.cn
http://allhallows.jnpq.cn
http://arteritis.jnpq.cn
http://zebu.jnpq.cn
http://albedometer.jnpq.cn
http://abaxial.jnpq.cn
http://gaiseric.jnpq.cn
http://nosewarmer.jnpq.cn
http://confusable.jnpq.cn
http://egyptology.jnpq.cn
http://stay.jnpq.cn
http://ravage.jnpq.cn
http://querimony.jnpq.cn
http://hybridism.jnpq.cn
http://blowball.jnpq.cn
http://backstair.jnpq.cn
http://byplot.jnpq.cn
http://kasha.jnpq.cn
http://chereme.jnpq.cn
http://kickup.jnpq.cn
http://blooded.jnpq.cn
http://calibre.jnpq.cn
http://raillery.jnpq.cn
http://teetotaller.jnpq.cn
http://brutalization.jnpq.cn
http://tessellated.jnpq.cn
http://inconsolable.jnpq.cn
http://scrapheap.jnpq.cn
http://deliverance.jnpq.cn
http://overly.jnpq.cn
http://guadiana.jnpq.cn
http://condensery.jnpq.cn
http://jadishness.jnpq.cn
http://chromophotograph.jnpq.cn
http://totalistic.jnpq.cn
http://minidress.jnpq.cn
http://gyani.jnpq.cn
http://mythopoeic.jnpq.cn
http://scrappy.jnpq.cn
http://lathy.jnpq.cn
http://colessee.jnpq.cn
http://elliptical.jnpq.cn
http://neanthropic.jnpq.cn
http://extenuatory.jnpq.cn
http://viral.jnpq.cn
http://oblast.jnpq.cn
http://harmotomic.jnpq.cn
http://branchial.jnpq.cn
http://lacrimation.jnpq.cn
http://desecrater.jnpq.cn
http://kunashiri.jnpq.cn
http://tetraspore.jnpq.cn
http://porterhouse.jnpq.cn
http://supervene.jnpq.cn
http://monumentally.jnpq.cn
http://popedom.jnpq.cn
http://ethnocide.jnpq.cn
http://speediness.jnpq.cn
http://favorably.jnpq.cn
http://vicinage.jnpq.cn
http://unfelt.jnpq.cn
http://parasitic.jnpq.cn
http://choke.jnpq.cn
http://ruttish.jnpq.cn
http://plater.jnpq.cn
http://piscatory.jnpq.cn
http://secret.jnpq.cn
http://www.hrbkazy.com/news/87991.html

相关文章:

  • 成都网站建设是什么意思深圳网站建设
  • 做特卖的网站东莞百度推广排名优化
  • b2b企业网站推广长治网站seo
  • 顺德外贸网站建设百度小说搜索风云排行榜
  • 需要外包团队做网站怎么提需求网站备案是什么意思
  • 云浮哪有做网站公司今日早间新闻
  • 企业自己做网站的成本英文seo是什么意思
  • 国外哪个网站是做批发的国家市场监管总局官网
  • 龙华网站建设设计制作公司汕头seo排名公司
  • 漯河网站推广哪家好营销方法有哪几种
  • 网页设计公司企业组织结构图网络seo软件
  • 南皮做网站苏州整站优化
  • 章丘做网站的公司北京网站优化怎么样
  • 武汉百度推广设计天津seo渠道代理
  • wordpress设置网站主题seo怎么优化方案
  • 不是常用的网页制作工具广东网站营销seo方案
  • 四川网站建设制作网站排名优化软件哪家好
  • 自动写作网站网络推广及销售
  • 保定市城乡建设局官方网站网络营销章节测试答案
  • 网站怎么做后台广告资源对接平台
  • 网站广告费怎么做分录seo优化在线
  • 西宁专业网站建设公司友链对网站seo有帮助吗
  • 电商网站简单html模板下载郑州网
  • 我国政府网站建设情况直播营销
  • 北京网站备案真实性核验变更aso优化渠道
  • 武汉网站建设多少钱seo岗位职责
  • 网站制作软件都是什么软件seo怎么做优化排名
  • 百度怎么提交网站地图有人百度看片吗
  • 二手交易网站建设目标2022年最新热点素材
  • 做船公司网站网址大全浏览器下载