4

クラスがあります

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
4

1 に答える 1

10

配列の割り当てで使用unique_ptrするには、その特殊化を使用する必要があります。

unique_ptr<A[]> a(new A[5]);
于 2014-07-24T11:20:51.843 に答える