static_cast<int>a 相当于c语言中的(int)a, 这样的强制转换符,只能静态检测。
dynamic_cast 是用于多态的转化,其目的必须是一个指针或引用(父类转子类时必须如此)。
另外 dynamic 提供动态检测机制,可以检测出 转型是否安全,如转型安全,则返回对象地址,否则返回NULL。
如:
class A{};
class B:public A{};
B *p = dynamic_cast<B*>(new A);
if(p){...} //转型安全
else{...} //不安全