1

そのため、インスタンスの 1 つとして配列を持つオブジェクトを取得しました。

private:
  int arr[100]; //this is a fix array

オブジェクトのデストラクタを呼び出すときは、次のように書く必要があります。

~MyBook(){delete []arr;} //just like I did with array pointer

それとも、このように書くべきですか

~MyBook(){}

ありがとうございました

4

2 に答える 2

4

で配列を割り当てましたnew[]か?いいえ?その後、使用しないでくださいdelete[]。それはそれと同じくらい簡単です。delete([])それぞれ割り当てられていないものを呼び出すのは、未定義の動作new([])です。

また、必要がなければデストラクタを書かないでください。この場合、必須ではありません。

于 2013-01-20T23:20:43.030 に答える
1

配列しかない場合は、デストラクタを提供する必要はありません。コンパイラで合成されたものはうまくいきます。他の理由でデストラクタが必要になったとしてもdelete[]、配列を呼び出そうとしないでください。で動的に割り当てられた配列に対してのみこれを行う必要がありますnew[]

于 2013-01-20T23:19:51.713 に答える