コンストラクタは、オブジェクトが作成されたときに呼ばれる初期化処理用のメンバ関数・・・。
これを定義しておくことで、メンバ変数などに初期値を設定するなど、オブジェクト作成時にしておかなければならない処理を行える・・・。
コンストラクタは、戻り値なしの、
class <クラス名>{
<アクセス指定子>:
<クラス名>(<引数>, ...);
};
と宣言し、
<クラス名>::<クラス名>(<引数>, ...){ }
で定義する・・・。
クラス名と同じ名前のメンバ関数で、戻り値はないが、引数を渡すことはできる・・・。
クラスの頁で作成したclass_profileの各メンバ変数(name, age, address)を、
コンストラクタで特定の値("(none)", -1, "(none)")に初期化する・・・。
まずは、クラスの定義・・・。
このコンストラクタ
は引数なし・・・。
次に、コンストラクタの中身を定義・・・。
中ではstrcpyや代入で、nameに"(none")、ageは-1、addressに"(none)"をセットしている・・・。
これで初期化処理は終了・・・。
あとはこれまで通り・・・。
この中で、オブジェクトの作成は、
この時に行われるので、初期化もこのときに行われる・・・。
このあと、
outputメンバ関数を呼んでメンバ変数を出力してみる・・・。
$ ./constructor name: (none) age: -1 address: (none)
途中、ここまで出力される・・・。
確かに初期化処理が行われていることがわかる・・・。
そのあとは、入力して、
$ ./constructor name: (none) age: -1 address: (none) name: Taro age: 20 address: Tokyo
また、メンバ変数の出力・・・。
$ ./constructor name: (none) age: -1 address: (none) name: Taro age: 20 address: Tokyo name: Taro age: 20 address: Tokyo
初期化時の値とは変わっている・・・。
Sample/constructor.cpp at master · bg1bgst333/Sample · GitHub