2.4. 作用域数组

作用域数组的使用方式与作用域指针相似。 关键不同在于,作用域数组的析构函数使用 delete[] 操作符来释放所包含的对象。 因为该操作符只能用于数组对象,所以作用域数组必须通过动态分配的数组来初始化。

对应的作用域数组类名为 boost::scoped_array,它的定义在 boost/scoped_array.hpp 里。

  1. #include <boost/scoped_array.hpp>
  2.  
  3. int main()
  4. {
  5. boost::scoped_array<int> i(new int[2]);
  6. *i.get() = 1;
  7. i[1] = 2;
  8. i.reset(new int[3]);
  9. }

boost:scoped_array 类重载了操作符 operatoroperator bool()。 可以通过 operator 操作符访问数组中特定的元素,于是 boost::scoped_array 类型对象的行为就酷似它所含的数组。

正如 boost::scoped_ptr 那样, boost:scoped_array 也提供了 get()reset() 方法,用来返回和重新初始化所含对象的地址。