ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

智能指针遇到的一些解答

2022-01-05 20:05:00  阅读:194  来源: 互联网

标签:null auto move 指针 智能 copy ptr 解答


1. auto_ptr 不建议使用的原因:

auto_ptr 采用 copy 语义来转移指针资源,转移指针资源的所有权的同时将原指针置为 nullptr,这跟通常理解的 copy 行为是不一致的(不会修改原数据),而这样的行为在有些场合下不是我们希望看到的。

例如参考《Effective STL》第 8 条,sort 的快排实现中有将元素复制到某个局部临时对象中,但对于 auto_ptr,却将原元素置为 null,这就导致最后的排序结果中可能有大量的 null。

而现在 C++11 的对 move 语义的支持,使得这样的资源转移通常只会在必要的场合发生,
例如转移一个临时变量(右值)给某个 named variable(左值),
或者一个函数的返回(右值)

这也就是用 unique_ptr 代替 auto_ptr 的原因,
本质上来说,就是 unique_ptr 禁用了 copy,而用 move 替代。

参考:auto_ptr的缺陷在哪里?为什么不应该用?

 

标签:null,auto,move,指针,智能,copy,ptr,解答
来源: https://www.cnblogs.com/strive-sun/p/15768622.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有