初歩的な質問なんですが、
class A{ .... }; class B: public A{.......}; class C: public A{.......};

A* a;
a = new B;
a = new C;

みたいに使いたい時のdeleteの仕方が分かりません。

delete (B*)a;

とやらないとBのデストラクタが呼ばれないみたいなんですが、
newする前にこうやってdeleteしていくんでしょうか?