C++におけるキャストの概念がいまいち理解できないんですが、
dynamic_cast以外は、
C形式のキャストを用途ごとに分けて機能を分割することで不正と思われるキャストをコンパイル時に弾けるようにしよう、
てことで合ってますか?