我有一个班级
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
答案 0 :(得分:10)
要将unique_ptr
与数组分配一起使用,您需要使用它的特化:
unique_ptr<A[]> a(new A[5]);