クラスのデストラクタとは何か
メニューを表示するにはスワイプしてください
定義
デストラクタは、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