2014-07-24 125 views
4

我有一個類如何使用的unique_ptr數組

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 

回答