cast関連で分かりにくくしているのは、用語の問題も有る。
図で書く場合、日本語だと基本クラスを(基礎として)下に置いて、継承クラスを
上に積み重ねていく感じがするけど、なぜか C++ においては、上に基本クラス、
下に継承クラスがあるようにイメージしているらしく、ちょうど、根っ子を上に
書き、枝や葉を下に書いていく、(自然の木とは逆さまの)「ツリー」を書いているように
捕らえているらしい。up-cast は、「上へのキャスト」とされるが、その
上とは基本クラスへ向かう方向のこと。逆に、down-cast とは、「下への
キャスト」で、継承クラスへ向かう方向のこと。

誰が考えたのか知らないけれど、個人的には、この感覚が逆さまな感じがするので、
cast の説明を理解するのに時間が掛かってしまった事がある。