そのため、インスタンスの 1 つとして配列を持つオブジェクトを取得しました。
private:
int arr[100]; //this is a fix array
オブジェクトのデストラクタを呼び出すときは、次のように書く必要があります。
~MyBook(){delete []arr;} //just like I did with array pointer
それとも、このように書くべきですか
~MyBook(){}
ありがとうございました
そのため、インスタンスの 1 つとして配列を持つオブジェクトを取得しました。
private:
int arr[100]; //this is a fix array
オブジェクトのデストラクタを呼び出すときは、次のように書く必要があります。
~MyBook(){delete []arr;} //just like I did with array pointer
それとも、このように書くべきですか
~MyBook(){}
ありがとうございました
で配列を割り当てましたnew[]
か?いいえ?その後、使用しないでくださいdelete[]
。それはそれと同じくらい簡単です。delete([])
それぞれ割り当てられていないものを呼び出すのは、未定義の動作new([])
です。
また、必要がなければデストラクタを書かないでください。この場合、必須ではありません。
配列しかない場合は、デストラクタを提供する必要はありません。コンパイラで合成されたものはうまくいきます。他の理由でデストラクタが必要になったとしてもdelete[]
、配列を呼び出そうとしないでください。で動的に割り当てられた配列に対してのみこれを行う必要がありますnew[]
。