• 2.4. 作用域数组

    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() 方法,用来返回和重新初始化所含对象的地址。