如何将unique_ptr用于数组

时间:2014-07-24 11:19:28

标签: c++ unique-ptr move-constructor

我有一个班级

class A {
public:
  A(){cout<<"C";}
  ~A(){cout<<"D";}
};
int main(){
  unique_ptr<A> a(new A[5]); // - doesn't work 
  unique_ptr<A> a(new A[1]); // - doesn't work
  unique_ptr<A> a(new A); // - works
}

为什么会这样?

我想这就是移动构造函数(由于析构函数不能自动创建),但为什么我们需要一个移动构造函数呢?

之间有什么区别:

unique_ptr<A> a(new A[1]); // - doesn't work
unique_ptr<A> a(new A); // -works

1 个答案:

答案 0 :(得分:10)

要将unique_ptr与数组分配一起使用,您需要使用它的特化:

unique_ptr<A[]> a(new A[5]);