そもそもキャストなんでそう使わないだろ、あまりにも頻繁に出てくるようだったら設計が悪い。
そんな悪たるキャスト、わかりづらくすれば使う気も失せるだろ、それでも使うなら晒し上げてやる。
というのがC++作者の考えのようで、というのはだいぶひねくれた解釈だが。

とりあえずstatic_cast(アップキャスト、数値型相互など)
だめならdynamic_cast(ダウンキャスト)
それもだめならconst_cast(const外し)
最後の手段(というわりにはそこそこ使う)reinterpret_cast