C++四种强制类型转化的区别

先介绍const_cast和reinterpret_cast:

      const_cast用于消除类型中的const, volatile, __unaligned属性。

      reinterpret_cast主要用于转换不相容的数据类型,特别是在指针类型和非指针类型之间进行转换,当然它也可以用于转换指针之间的转换。

再介绍一对相对立的static_cast和dynamic_cast:

      它们都是c++风格的强制类型转换,不过不具备上面2中转换的特性,即:不能在指针类型和非指针类型之间进行转换,也不能消除类型中的const和volatile属性。

      它们的区别在于:static_cast在编译时刻就验证被转换的变量与目标类型之间是否相容,如果类型转换不合理,就会导致编译时刻错误;dynamic_cast在运行时刻对强制类型转换进行检查。当指针无效时,返回0,若是无效的引用强制类型转换就发生bad_cast异常。

      另外,dynamic_cast不能用于转换没有继承关系的类型,如int转换到double类型。

 

你可能感兴趣的:(C++,c,C#)