Effective C++ Item 72009年07月23日 12時29分24秒

  • 多態性の基底クラスのデストラクタは仮想関数にする。もし、仮想関数が一つでもあれば、デストラクタは仮想関数にする必要がある。
  • 基底クラスや多態性が使われないのなら仮想関数は使うべきではない。

vptr(virtual table pointer) and vtbl(virtual table) が動的バインディングを行なうために作られる。 仮想関数が使われていると、実行時の型によってクラス関数の呼び出しが決定される。派生関数の関数から順次実行される。

標準ライブラリや STL のデストラクタは仮想関数にはなっていない。これらのクラスを基底クラスにしてはいけない。

前回次回