>>446
なるほど、理解できました。ありがとうございます。

C++ のような静的型付き言語で多相性を利用するとき、
派生クラスを基底クラスのポインタで指さなきゃいけないわけだが、
delete するときにはポインタは自分を基底クラスだとおもっているので、
基底クラスのデストラクタしか呼ばれない。

だから本来は、以下のようにタイプキャストでもしてやればいいんじゃないの?

int main() {
 A* b = new B;
 delete (B*)b;
}

でもこれって面倒だから、むしろデストラクタを virtual にしろという
あまり本質とも思えない慣習を広めた、というわけかな。