6.コンストラクタ
オブジェクトが初期値として持つべき値などをここで設定することができます
コンストラクタを明示しなければ、コンストラクタは何もせずにオブジェクトを生成しますが
コンストラクタを定義している場合は、オブジェクト宣言時にそれを実行します
ただし、コンストラクタには戻り値は存在しません
このプログラムでは、コンストラクタが呼び出されると「Kitty on your lap」と表示します
注目していただきたいのは、グローバルオブジェクト obj とmain()関数内のローカルオブジェクト obj です
コンストラクタは、グローバル、ローカル問わず、オブジェクト生成時に発生しますが
グローバルとローカルでは、発生するタイミングが異なります
コンストラクタ関数も、定義できる本体部分は関数と変わりません
つまり、通常の関数と同じようにあらゆる処理が可能ですが
オブジェクトの発生時に常に呼び出されるため、初期化に必要な処理のみにするのが好ましいですね
https://jp.hjenglish.com/new/p51407/
この機能によって、より柔軟で汎用的なオブジェクトの初期化を行うことができます
大規模なシステム開発になると、オブジェクトの破棄には非常に気を使います
これらの扱いや解放を人間に依存させると、非常にバグやリークの多いプログラムになりかねません
コンストラクタの名前の前にチルダ( ~ ) をつけるとデストラクタ関数になります
デストラクタ関数も、コンストラクタ関数と同じく戻り値はありません
さらにデストラクタ関数は、仮引数も受け取らない(渡せない)という特徴があります
しかし、関数が終了するとともにオブジェクトが破棄されるためデストラクタが呼び出されます