boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。

boost::scoped_ptr的实现和std::auto_ptr非常类似,都是利用了一个栈上的对象去管理一个堆上的对象,从而使得堆上的 对象随着栈上的对象销毁时自动删除。不同的是,boost::scoped_ptr有着更严格的使用限制——不能拷贝。这就意味 着:boost::scoped_ptr指针是不能转换其所有权的。

1:不能转换所有权

boost::scoped_ptr所管理的对象生命周期仅仅局限于一个区间(该指针所在的"{}"之间),无法传到区间之外,这就意味着boost::scoped_ptr对象是不能作为函数的返回值的(std::auto_ptr可以)。

2:不能共享所有权

这点和std::auto_ptr类似。这个特点一方面使得该指针简单易用。另一方面也造成了功能的薄弱——不能用于stl的容器中。

3:不能用于管理数组对象

由于boost::scoped_ptr是通过delete来删除所管理对象的,而数组对象必须通过deletep[]来删除,因此boost::scoped_ptr是不能管理数组对象的,如果要管理数组对象需要使用boost::scoped_array类。

相关文章:

  • 2022-02-16
  • 2021-10-09
  • 2022-12-23
  • 2022-02-23
  • 2022-12-23
  • 2021-12-26
  • 2022-01-16
  • 2021-09-16
猜你喜欢
  • 2022-03-03
  • 2022-03-02
  • 2022-12-23
  • 2022-02-08
  • 2022-01-07
  • 2021-09-16
  • 2021-05-29
相关资源
相似解决方案