最近、次のようなコードを見ました。

class B{
 virtual void f() = 0;
};

class X : public B{
 const B* b;
public:
 X(const B* c):b(c){}
 virtual ~X(){
  delete const_cast<B*>(b);
 }
void f(){}
};

C/C++ UserJournalにあったコードを簡単化したものです。
疑問は、

1 ~Xのconst_castに何か意味があるか?
2 なんでBに仮想デストラクタを置かないか?

です。どうも変なコードなんですが、CUJの記事だし。
と悩んでます。