2.4. 作用域数组
作用域数组的使用方式与作用域指针相似。 关键不同在于,作用域数组的析构函数使用 delete[]
操作符来释放所包含的对象。 因为该操作符只能用于数组对象,所以作用域数组必须通过动态分配的数组来初始化。
对应的作用域数组类名为 boost::scoped_array
,它的定义在 boost/scoped_array.hpp
里。
- #include <boost/scoped_array.hpp>
- int main()
- {
- boost::scoped_array<int> i(new int[2]);
- *i.get() = 1;
- i[1] = 2;
- i.reset(new int[3]);
- }
boost:scoped_array
类重载了操作符 operator
和 operator bool()
。 可以通过 operator
操作符访问数组中特定的元素,于是 boost::scoped_array
类型对象的行为就酷似它所含的数组。
正如 boost::scoped_ptr
那样, boost:scoped_array
也提供了 get()
和 reset()
方法,用来返回和重新初始化所含对象的地址。