https://www.reddit.com/r/cpp/comments/jvg7t8/never_downcast_with_c_style_casts/
> The C Style cast performs a reinterpret_cast<Derived*>.> Ultimately what happens is the function at vtable address 0 of the second vtable gets called instead of address 0 of the first vtable.
C-style cast で downcast すると(基底クラスが仮想関数を持っている場合)vtable がぶっ壊れる、当たり前