当前位置:C++技术网 > 资讯 > Boost简单学习:4 智能指针的作用域数组

Boost简单学习:4 智能指针的作用域数组

更新时间:2015-11-14 21:38:00浏览次数:1+次

    他们不同的地方关键不同在于,作用域数组的析构函数使用 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方法,用来返回和重新初始化所含对象的地 址。