• 2.6. 共享数组

    2.6. 共享数组

    共享数组的行为类似于共享指针。 关键不同在于共享数组在析构时,默认使用 delete[] 操作符来释放所含的对象。 因为这个操作符只能用于数组对象,共享数组必须通过动态分配的数组的地址来初始化。

    共享数组对应的类型是 boost::shared_array,它的定义在 boost/shared_array.hpp 里。

    1. #include <boost/shared_array.hpp>
    2. #include <iostream>
    3.  
    4. int main()
    5. {
    6. boost::shared_array<int> i1(new int[2]);
    7. boost::shared_array<int> i2(i1);
    8. i1[0] = 1;
    9. std::cout << i2[0] << std::endl;
    10. }
    • 下载源代码

    就像共享指针那样,所含对象的所有权可以跟其他共享数组来共享。 这个例子中定义了2个变量 i1i2,它们引用到同一个动态分配的数组。i1 通过 operator 操作符保存了一个整数1——这个整数可以被 i2 引用,比如打印到标准输出。

    和本章中所有的智能指针一样,boost::shared_array 也同样提供了 get()reset() 方法。 另外还重载了 operator bool()