cpp:dynamic_cast
dynamic_cast は、実行時に型を判別して安全にダウンキャストするためのキャスト演算子です。
C では型の情報はコンパイル時にしか保持されていませんでしたが、C++ では実行時にも型の情報を利用できるようになっており、これを実行時型情報 ( RTTI: Run Time Type Information ) と言います。
dynamic_cast はアップキャストにも使えますが、安全でないアップキャストなんてないので、使うのは普通はダウンキャストの時になります。 ポインタの変換の場合、ダウンキャストが可能ならばダウンキャストしたポインタが、不可能ならば null が返されます。
参照の場合は、ダウンキャスト不可能な時に bad_cast 例外が投げられます。