教訓1
クラスのイニシャライズリストに全てのメンバを書いて、いつでも意図した通りに初期化されるか
考慮しないといけない。
自分で作ったクラスに有効にしたり、無効にしたりするメソッドがあって、下のような感じになっている状況。
class A{ public: A(){} void enable(){ flag = true; } void disable(){ flag = false; } bool isEnable(){ return flag; } private: bool flag; }
このクラスのインスタンスを作ってisEnableでチェックして実行するコードがあったのだけれども、どうにもこうにもたまにちゃんと動かなくて、
だいぶ悩まされた。
結局、コンストラクタでちゃんと変数を初期化していないせいで、プログラムの通り方によって動いたり動かなかったりしていた模様。
意図とは違う挙動になっていたようだ。
ちゃんとイニシャライズリストを順番にも気をつけながら、意図をしっかり書こうってのが今日の教訓になった。