基底クラスのデストラクタがvirtualでない場合、基底クラスのポインタ経由で派生クラスのオブジェクトをdeleteするとどうなりますか?
C++の規格では、基底クラスのデストラクタが仮想でないとき、基底クラスへのポインタを通じて派生クラスのオブジェクトをdeleteすると未定義動作になると定められています。実際には派生クラス側のデストラクタが呼ばれず、派生クラスが確保したリソースがリークすることが多いです。ポリモーフィックに使う基底クラスでは、デストラクタを virtual ~Base() = default; のように宣言するのが基本的な作法です。コンパイルエラーにはならないため気づきにくい点にも注意が必要です。