Effective C# 3rd 読書メモ 16 コンストラクタ内で仮想関数を呼び出してはいけない

仮想関数は、コンストラクタの中で(C++プログラマーにとっては)奇妙な振る舞いをする。
たとえば、以下のコードを実行すると、出力されるのは「Set by initializer」である。

一般に、コンストラクタで仮想関数を実行すると、コードがひどく壊れやすくなる。
派生クラスが何をするか完全にコントロールすることはできないからだ。
コンストラクタ内での仮想関数の実行は禁止すべき(Never call)である。

コメントを残す