1

次のクラスがあるとします。

   class foo{

   int array_allocation(int length){

          array= new int[length];
          return 0;

   }
   private:
      int *array;

   };

ここで実装する必要があります~foo(){ delete []array};か、それとも暗黙的に行われますか??

4

2 に答える 2

4

どちらでもない、std::vector<int>代わりに使用する必要があります。私はあなたのクラスのメンバーとして話しているのではなく、あなたのクラスの代わりに.

編集:いいえ、メモリは自動的に解放されません。意味のあるデストラクタ、コピー コンストラクタ、および代入演算子を提供する必要があります。

于 2012-08-27T21:56:57.777 に答える
1

ポインターは自動的に削除されません。また、そのクラスがコピーされると、メモリではなくポインターがコピーされます。RAII設計パターンと3 つのルールに従う必要があります。

于 2012-08-27T22:42:55.957 に答える