仮想デストラクタの明示的な呼び出し

オブジェクトの解体の例で、こう書いたことに注意して欲しい:

◎デストラクタの仮想呼び出し

object_->~T();

×デストラクタの非仮想呼び出し

object_->T::~T();

T* が指している先が T 型のオブジェクトである保証は当然無い((この例を出したところの記述では明らかに T 型のオブジェクトですが、一般論としてです。))ので、「 T::~T() という関数」の呼び出しを要求してはならない。呼び出さなければならないのは、「 ~T というスロットに入っている仮想関数」だ。
普通の仮想関数と違うのは、スロットの名前が一定していないこと。スロットの名前は、“そのときのポインタの静的な型に「 ~ 」を付けたもの”だ。そして、~T という名前であっても、このスロットに入っているのは T::~T() かもしれないし D::~D() かもしれない((もちろん、この DT の公開派生クラスです。))。