Smart_ptr库如何改进你的程序?

优质
小牛编辑
127浏览
2023-12-01
  • 使用shared_ptr进行对象的生存期自动管理,使得分享资源所有权变得有效且安全。

  • 使用weak_ptr可以安全地观测共享资源,避免了悬挂的指针。

  • 使用scoped_ptrscoped_array限制资源的使用范围,使得代码更易于编写和维护,并有助于写出异常安全的代码。

智能指针解决了资源生存期管理的问题(尤其是动态分配的对象[1]). 智能指针有各种不同的风格。多数都有一种共同的关键特性:自动资源管理。这种特性可能以不同的方式出现:如动态分配对象的生存期控制,和获取及释放资源 (文件, 网络连接)。Boost的智能指针主要针对第一种情况,它们保存指向动态分配对象的指针,并在正确的时候删除这些对象。你可能觉得奇怪为什么这些智能指针 不多做一点工作。它们不可以很容易就覆盖所有资源管理的不同情况吗?是的,它们可以(在一定范围内它们可以),但不是没有代价的。通用的解决方案意味着更 高的复杂性,而对于Boost的智能指针,可用性比灵活性具有更高的优先级。但是,通过对可定制删除器的支持,Boost的最智能的智能指针(boost::shared_ptr)可以支持那些不是使用delete进行析构的资源。Boost.Smart_ptr的五个智能指针类型是专门特制的,适用于每天的编程中最常见的需求。

[1] 因为泛型智能指针可以处理任何类型的资源。