智能指针遇到的一些解答
作者:互联网
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 替代。
标签:null,auto,move,指针,智能,copy,ptr,解答 来源: https://www.cnblogs.com/strive-sun/p/15768622.html