クラスのデストラクタとは何か
メニューを表示するにはスワイプしてください
定義
デストラクタは、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. デストラクタを宣言する構文は何ですか?
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 15
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 15