デストラクタ

コンストラクタが、オブジェクト生成時に初期化処理をするメンバ関数ならば、
デストラクタは、オブジェクト破棄時に終了処理をするメンバ関数・・・。

デストラクタは、戻り値なしで、頭にチルダ('~')をつけて、

class <クラス名>{
  <アクセス指定子>:

    ~<クラス名>();
    
};

と宣言し、

<クラス名>::~<クラス名>(){

}

と定義する・・・。
デストラクタの場合は引数もつけない・・・。

デストラクタを使う場合は、コンストラクタと対の処理を行う場合が多い・・・。
クラス、コンストラクタの頁で作成したclass_profileの各メンバ変数の一部(name, address)を動的配列にし、コンストラクタにてnew演算子で生成、デストラクタにてdelete演算子で破棄するようにしてみよう・・・。

まずは、クラスの定義・・・。
メンバ変数は・・・、

配列だったのをポインタに・・・。

コンストラクタとデストラクタは、

こんな感じ・・・。

コンストラクタの定義では、

コンストラクタが開始されたことを明示しつつ、newでname, addressを生成・・・。

デストラクタの定義は、

デストラクタ開始と明示し、name, addressをdeleteで破棄・・・。

main関数は、

と何も変わらない・・・。

実行すると、コンストラクタは、

のときに、実行される・・・。

$ ./destructor
----- constructor -----
name:

入力して、

$ ./destructor
----- constructor -----
name: Taro
age: 20
address: Tokyo

出力・・・。

$ ./destructor
----- constructor -----
name: Taro
age: 20
address: Tokyo

name: Taro
age: 20
address: Tokyo

このあと、プログラムを終了となる、

のあとにオブジェクトがスコープを抜けて破棄されるので、デストラクタが実行される・・・。

$ ./destructor
----- constructor -----
name: Taro
age: 20
address: Tokyo

name: Taro
age: 20
address: Tokyo
----- destructor -----
$

デストラクタも実行されたみたい・・・。

Sample/destructor.cpp at master · bg1bgst333/Sample · GitHub