JavaのinstanceofをC++で実現する

Javaにはinstanceof演算子を下記のように使うことで、抽象クラスAがBクラスであれば、
trueになる。※Aは抽象クラス。Bはその派生クラス。

A instanceof B

このような演算子C++には無いですが、下記のようにすると実現できる。

(1)Aクラスに、virtualでasB()関数を追加し、NULL(0)を返すようにする。
※戻り値型はA*
(2)BクラスではasB()関数をオーバライドし、thisを返す。

以上より、asB()がNULLであれば、Bクラス以外の派生クラスであり、asBが!NULLであればBクラスであることが判明する。

デメリットとしては、スーパークラスであるAが派生クラスを知ってないといけないということが挙げられる。