Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ クラスのデストラクタとは何か | Constructors and Destructors
C++オブジェクト指向プログラミング

bookクラスのデストラクタとは何か

メニューを表示するにはスワイプしてください

Note
定義

デストラクタは、object'sのライフタイムが終了したときに呼び出される特別なメンバ関数。主な目的は、オブジェクトがライフタイム中に取得したリソースを解放すること。

デストラクタの構文

デストラクタはコンストラクタとは逆の役割を持つが、作成方法は非常に似ている。宣言の原則もほぼ同じ。一般的な作成方法は以下の通り:

  • 名前: クラス名と同じだが、チルダ(~)が前に付く;
  • 戻り値なし: 戻り値の型は持たず、void も指定しない;
  • パラメータなし: パラメータを取ることはできない;
  • 自動呼び出し: オブジェクトがスコープから外れるか、明示的に削除されたときにコンパイラによって自動的に呼び出される。

デストラクタの自動呼び出し

デストラクタの自動呼び出しとは、デストラクタが自動的に呼び出されることを指す。これにより、オブジェクトが保持しているリソースが適切に解放され、メモリリークやリソースリークの防止に役立つ。

scope.cpp

scope.cpp

delete.cpp

delete.cpp

termination.cpp

termination.cpp

copy
123456
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
  • オブジェクトがスコープから外れるとき;
  • delete演算子を使用して動的に割り当てられたオブジェクトを削除するとき;
  • プログラムが終了するとき。

デストラクタの必要性

デストラクタの主な目的は、オブジェクトのライフタイム中に取得したリソースを解放すること。これにはファイルハンドルのクローズや、メモリ(newを使用)などの解放作業が含まれる。

ResourceHolder.cpp

ResourceHolder.cpp

FileHandler.cpp

FileHandler.cpp

copy
123456789101112
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };

1. デストラクタの主な目的は何ですか?

2. デストラクタを宣言する構文は何ですか?

question mark

デストラクタの主な目的は何ですか?

正しい答えを選んでください

question mark

デストラクタを宣言する構文は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  7

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  7
some-alt