引用 C++ Gotchas 中的第 45 项:
首先,dynamic_cast 不一定是动态的,因为它可能不执行运行时检查。当从派生类指针(或引用)到其公共基类之一执行 dynamic_cast 时,不需要运行时检查,因为编译器可以静态确定强制转换将成功。当然,在这种情况下不需要任何类型的转换,因为从派生类到其公共基类的转换是预定义的。
我认为上面的描述是通常使用 dynamic_cast 的地方(因此会进行运行时检查??)。
有人可以解释一下上述引用与使用 dynamic_cast 的“典型”需要之间的区别吗?这让我对何时需要使用 dynamic_cast 以及为什么不需要在上述场景中使用它感到困惑。