C++ 类型转换

来源:互联网 发布:淘宝店铺营业执照办理 编辑:程序博客网 时间:2024/05/10 00:41

reinterpret_cast:
    reinterpret_cast类型转换函数将一个类型的指针,转换为另一个类型的指针。这种转换不用修改指针变量值的数据格式(不改变指针变量值),值需在编译时重新解释指针的类型就可做到。reinterpret_cast可以将指针值转换为一个整数,但是不能用了非指针类型的转换。

const_cast:
    const_cast类型转换函数用于去除指针变量的常量属性,将它转换为一个对应指针类型的普通变量。反过来,也可以将一个非常量的指针变量转换为一个常指针变量。这种转换时在编译期间做出的类型更改。

static_cast:
    static_cast主要用于基本类型之间和具有继承关系的类型之间的转换,这种转换一般会更改变量的内部表示方式,因此static_cast应用用于指针类型的转换,没有太大的意义,即使允许指针类型转换,也不及
reinterpret_cast效率高。继承类与基类指针可以进行相互转换,都能编译通过,但基类指针转换为继承类指针,具有一定的危害性。

dynamic_cast:
     与静态static_cast相对,是动态dynamic_cast转换。这种转换是在运行转换分析的,并非在编译时进行,明显区别于上面3个类型转换操作。
     dynamic_cast只能在继承类对象的指针之间或引用之间进行类型转换。进行转换时,会根据当前运行对象的运行时类型信息(RTTI),判断类型对象之间的转换是否合法。dynamic_cast的指针转换失败,可以通过NULL指针检测,引用转换失败,则抛出一个bad_cast异常

原创粉丝点击