ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

仮想デストラクタにする?しない?

Effective C++ 第2章7項
基底クラスだからといってデストラクタを必ず仮想デストラクタにするというのは間違い。
基本は「ポリモーフィズムのための基底クラスは仮想デストラクタにする。」
ポリモーフィズム、つまり派生クラスのオブジェクトを基底クラスのポインタで扱うような場合。仮想デストラクタにしておかないと基底クラスのポインタでdeleteしようとすると派生クラスのデストラクタが呼ばれない。
逆にポリモーフィズム的な使い方をしない場合は仮想デストラクタにする必要はない。仮想デストラクタにすると仮想テーブルポインタの情報を含むことになり、ポリモーフィズムで使っていない場合は無駄となってしまう。