可用的 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中文网其他相关文章!