首页 >后端开发 >C++ >我应该选择哪个 C 智能指针?

我应该选择哪个 C 智能指针?

Patricia Arquette
Patricia Arquette原创
2024-12-02 17:10:12201浏览

Which C   Smart Pointer Should I Choose?

可用的 C 智能指针实现及其比较

C 03

  • std::auto_ptr:在未来的 C 标准中已弃用。有限的垃圾收集、所有权复杂性以及无法在 STL 容器中使用。
  • std::auto_ptr_ref: 不是真正的智能指针;与 std::auto_ptr 结合使用以允许复制和赋值。

C 11

  • std::unique_ptr: 替换 std::auto_ptr。纠正 std::auto_ptr 的弱点,允许使用数组、左值保护以及在 STL 容器中使用。
  • std::shared_ptr: 引用计数智能指针。支持别名和指针算术。
  • std::weak_ptr: 对 std::shared_ptr 拥有的对象的非拥有引用。防止无限循环引用计数。

Boost

  • boost::shared_ptr: 流行的共享引用计数智能指针。高性能和多功能性。
  • boost::weak_ptr: 对 boost::shared_ptr 的非拥有引用。
  • boost::scoped_ptr:简单的智能指针替代 boost::shared_ptr 且更少
  • boost::intrusive_ptr: 用于创建您自己的智能指针兼容类的自定义智能指针。
  • boost::shared_array: 共享智能指针数组。
  • boost::scoped_array: 数组的不可复制智能指针。

Qt

  • QPointer:弱智能指针QObject 和派生类。已弃用。
  • QSharedDataPointer: 与 boost::intrusive_ptr 相当的强智能指针,具有线程安全性。
  • QExplicitlySharedDataPointer: QSharedDataPointer 2.0 版,具有增强功能控制
  • QSharedPointer: 原子引用计数、线程安全、可共享智能指针。
  • QWeakPointer: 对 a 的非拥有引用QSharedPointer.
  • QScopedPointer: 基于 boost::scoped_ptr 的单所有者智能指针,适合异常安全代码和兼容性。

以上是我应该选择哪个 C 智能指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn