理解 C 中的智能指针:何时使用哪种类型
智能指针是现代 C 编程中管理对象所有权和资源的基本工具寿命。 C 11 和 Boost 库的出现引入了多种智能指针类型,提出了在不同场景中使用哪一种的问题。
共享所有权
对于共享资源所有权,建议使用 std::shared_ptr 和 std::weak_ptr。 Shared_ptr允许多个所有者共享资源,而weak_ptr提供非拥有引用来观察资源而不影响其生命周期。 Boost还提供shared_array作为std::shared_ptr<:vector>的替代品。 const>.
唯一所有权
std::unique_ptr 是唯一所有权的默认选择,与 Boost 的scoped_ptr 相比具有多个优势。 Unique_ptr 支持自定义删除器,可移动,并且与 STL 容器兼容。 Boost 提供了scoped_array 作为scoped_ptr 的数组版本,它已在C 11 中标准化。
无所有权
原始指针或引用应用于非拥有引用指向比引用对象/作用域寿命更长的资源。原始指针允许为空和可重置,而引用则首选不变性。
Boost 智能指针
Boost 提供了额外的智能指针类型,例如 intrusive_ptr,这对于从现有资源中采用引用计数管理。然而,这些类型在 C 11 中尚未标准化。
弃用
std::auto_ptr 现已在 C 11 中弃用,转而使用 unique_ptr,它提供了增强的功能.
以上是我应该使用哪个 C 智能指针?的详细内容。更多信息请关注PHP中文网其他相关文章!