知识卡片

unique_ptr表达独占

普通读书笔记卡 · 1393

内容

unique_ptr 表达独占所有权,不能复制、可以移动;单对象形式默认用 delete,数组形式默认用 delete[],也支持自定义删除器。有状态删除器或函数指针可能增加句柄体积。它适合单一拥有者;只有确实需要共享生命周期时,再转换到共享所有权模型。

参考来源

- 位置:《Effective Modern C++》第4章《智能指针》,条款十八:对于独占资源使用 std::unique_ptr(源文件:_epub-src/EPUB/text/ch005.xhtml) - 结论依据:原文定义独占所有权和只移特性,列出不同删除器带来的句柄大小变化。 - 原始内容:std::unique_ptr 有两种形式,一种用于单个对象(std::unique_ptr<T>),一种用于数组(std::unique_ptr<T[]>)。结果就是,指向哪种形式没有歧义。std::unique_ptr 的API设计会自动匹配你的用法。