随着新标准的到来(以及某些编译器中已经可用的部分),新类型std::unique_ptr
应该是替代品std::auto_ptr
.
它们的用法是否完全重叠(这样我可以在我的代码上进行全局查找/替换(不是我会这样做,但如果我这样做))或者我应该意识到一些在阅读文档时不明显的差异?
另外,如果它是直接替换,为什么要给它一个新名称而不是仅仅改进std::auto_ptr
?
您无法进行全局查找/替换,因为您可以复制auto_ptr
(后果已知),但是unique_ptr
只能移动。任何看起来像的东西
std::auto_ptr<int> p(new int);
std::auto_ptr<int> p2 = p;
至少必须变成这样
std::unique_ptr<int> p(new int);
std::unique_ptr<int> p2 = std::move(p);
至于其他的区别,unique_ptr
可以正确处理数组(它会调用delete[]
, while auto_ptr
将尝试致电delete
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)