クラスのデストラクタとは何か
メニューを表示するにはスワイプしてください
定義
デストラクタは、object'sの寿命が終了したときに呼び出される特別なメンバ関数。主な目的は、オブジェクトの存続期間中に取得したリソースを解放すること。
デストラクタの構文
デストラクタの作成は、目的こそ逆であるものの、コンストラクタの作成と非常によく似ている。宣言の原則もほぼ同じ。一般的な作成方法は以下の通り:
- 名前:クラス名と同じだが、チルダ(
~)が前に付く; - 戻り値なし:戻り値の型は持たず、void すら指定しない;
- パラメータなし:パラメータを取ることはできない;
- 自動呼び出し:オブジェクトがスコープ外になるか、明示的に削除されたときにコンパイラによって自動的に呼び出される。
デストラクタの自動呼び出し
デストラクタの自動呼び出しとは、デストラクタが自動的に呼び出されることを指す。これにより、オブジェクトが保持していたリソースが適切に解放され、メモリリークやリソースリークの防止に役立つ。
scope.cpp
delete.cpp
termination.cpp
123456int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
- オブジェクトがスコープから外れるとき
delete演算子を使用して動的に割り当てられたオブジェクトを削除するとき- プログラムが終了するとき
デストラクタの必要性
デストラクタの主な目的は、オブジェクトのライフタイム中に取得したリソースを解放すること。これにはファイルハンドルのクローズ、メモリ(newを使用)などの解放作業が含まれる。
ResourceHolder.cpp
FileHandler.cpp
123456789101112class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };
1. デストラクタの主な目的は何ですか?
2. デストラクタを宣言する構文は何ですか?
すべて明確でしたか?
フィードバックありがとうございます!
セクション 2. 章 7
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 2. 章 7