dynamic_Cast是一种试探性映射,如被映射的泪如目标类没有派生关系的话,则返回null,static_cast通常可用于类层次的静态导航,无映射变换,窄化变换(会丢失信息)等等,static_cast的应用要广一些,但如前所提到的,在类层次导航变换中我们应该使用前者,因为后者static_cast可能意味着冒险(比如变换时类似于强制转换一样丢失信息)。在某些情况下较dynamic_Cast快.reinterpret_cast是最危险的,只要编译通过就行,使用不当的话很有可能导致RUN-TIME大灾难.

解决方案 »

  1.   

    谢谢kimryo详尽的解释,一解了心中的一个大谜(说的夸张点)不过自从论坛改版后我一直不知道怎么给分,来日一定奉上.
    3ks very much!
      

  2.   

    dynamic_cast(如果启动了支持运行进类型信息RTTI)可以有助于判断在运行时所指向的对象的确切类型
    static_cast在相关的指针类型或对象之间进行类型转换,在转换时编译器会通过构造函数或转换类型函数转换关系
    reinterpret_cast是强制转换,而不论是否提供了相应构造函数或转换类型
    数,因此,在转换时其内存格式并不变化,例如,当对double转换成int后,通过cout输出时,输出的仍然是double类型,其主要目的是:将一个指针转换成其它类型的指针。