gpt4 book ai didi

c++ - std::auto_ptr 到 std::unique_ptr

转载 作者:IT老高 更新时间:2023-10-28 11:28:38 24 4
gpt4 key购买 nike

随着新标准的到来(以及某些编译器中已经提供的部分),新类型 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[],而auto_ptr会尝试调用删除

关于c++ - std::auto_ptr 到 std::unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com