Top > C++言語 > デストラクタ


デストラクタ

デストラクタとは
  • デストラクタは、オブジェクトがメモリから破棄される時に自動的に呼び出される特殊なメンバ関数
  • デストラクタは、オーバーロードできない
  • デストラクタを明示的に呼び出すことはできない
  • 何らかの終了処理を記述する事が一般的
定義の仕方
  • public: アクセス指定子で定義する
  • 引数、戻り値を持たない関数として定義する
  • チルダ (~) をクラス名の前に付けた関数名にする
呼び出されるタイミング (何れか)
  • プログラムが終了するとき
  • オブジェクトが宣言された関数を抜けるとき
  • new 演算子で作成されたオブジェクトが、delete 演算子で破棄されるとき
サンプル
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 
 
 
-
|
|
|
|
!
 
 
 
-
|
!
 
 
 
-
|
!
 
 
 
-
|
|
|
|
!
 
 
 
 
-
|
|
|
|
|
!
#include <stdio.h>
 
class ChkFunc
{
public:
  int num;
  void ChkFunc (void);   /* コンストラクタ */
  void ~ChkFunc (void);  /* デストラクタ   */
};
 
void
ChkFunc::ChkFunc (void)
{
  printf ("コンストラクタが呼び出された。\n");
}
 
void
ChkFunc::~ChkFunc (void)
{
  printf ("オブジェクト %d のデストラクタが呼び出された。\n", num);
}
 
void
MyFunc (void)
{
  ChkFunc obj1;  // オブジェクト作成
 
  obj1.num = 1;
  return 0;      // オブジェクト破棄
}
 
 
void
main (void)
{
  MyFunc ();
 
  ChkFunc obj2;  // オブジェクト作成
  obj2.num = 2;
  return;        // オブジェクト破棄
}
実行結果
コンストラクタが呼び出された。
オブジェクト 1 のデストラクタが呼び出された。
コンストラクタが呼び出された。
オブジェクト 2 のデストラクタが呼び出された。


参考


リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Mon, 03 Jun 2019 14:37:49 UTC (2116d)