请教:reinterpret_cast;static_cast;dynamic_cast有什么区别,具体该怎么用?

解决方案 »

  1.   

    reinterpret_cast是强制转换,就像C中的(XXX)yyy一样。
    static_cast是int到long 等一类的转换。
    dynamic_cast是用在有继承关系之间的转换。如
    class base{
    ...};
    clas h : public base {
     };
    你就可以h m_h
    base * b = dynamic_cast<base*>(&m_h);
      

  2.   

    用法为
    xxx_cast < type-id > ( expression )

    int a=10;
    UINT x=static_cast<UINT>(a);1.
    static_cast转型最为常见,类似于以前c中的(UINT)a;
    2.
    dynamic_cast用于继承体系中的向下转型。(即将基类指针转换为派生类指针)
    如:
    Class B:public A
    {
    }
    B InstanceOfB;
    A *aaa=&InstanceOfB;
    B *bbb=dynamic_cast<B>(aaa);
    reinterpret_cast用于强制转换指针类型。
    如:
    int *it=&a;
    float *flt=reinterpret_cast<float *>(it);