凌云的博客

行胜于言

漫谈 C++ 智能指针 10(总)

分类:c++| 发布时间:2015-11-14 20:48:00


总结

在之前的几篇文章中,我们讨论了常见的 C++ 智能指针以及其应用场景。

C++ 智能指针只要有以下几种:

  • 普通指针指针:auto_ptr unique_ptr
  • 带引用计数的智能指针:shared_ptr
  • 强指针,弱指针:shared_ptr、weak_ptr
  • 侵入式指针:boost::intrusive_ptr

普通智能指针

普通智能指针通常用于需要确保在生命周期结束时能否释放资源的情况。

常见的开源实现有:

  • C++ 标准库中的:auto_ptr (将废弃,不推荐使用)
  • C++11 新增的:unique_ptr
  • boost 库中的 scoped_ptr
  • ACE 网络开发库中的 ACE_Auto_Ptr

带引用计数的智能指针

带引用计数的智能指针是一个共享对象的智能指针。 可以用于大多数的场景,根据是否运行于多线程环境可以选择是否实现为线程安全。

常见的开源实现有:

强指针/弱指针

强指针/弱指针 主要解决了带引用计数的智能指针无法处理循环引用的问题。

常见的开源实现有:

侵入式智能指针

侵入式智能指针是一个轻量级的 shared_ptr,相比 shared_ptr 消耗更少的资源。 多用于对性能要求较高的场合。 但是需要按侵入式智能指针的要求在客户类中处理引用计数。

常见的开源实现有:

示例代码

本系列文章中的示例代码可以从以下地址获取:

https://github.com/chenjianlong/books-code/tree/master/cpp-smart-pointer