转换指的是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。

C++标准定义了四个新的转换符:reinterpret_cast、static_cast、dynamic_cast和const_cast,目的在于控制类(class)之间的类型转换。 1.static_cast static_cast可以用于类层次结构中基类和子类之间指针或引用的转换。把子类的指针或引用转换成基类表示是安全的,但把基类指针或引用转换成子类指针或引用时,由于没有动态类型检查,所以,它是不安全的。基类和子类之间的动态类型转换一般建议使用dynamic_cast。static_cast可以用作对象继承之间转换,只不过有安全隐患。 2.dynamic_cast dynamic_cast用于对象的指针和引用,当用于多态类型转换时,允许隐式转换及相反的转换操作,与static_cast的不同之处在于,而在相反的转换过程中,dynamic_cast会检测操作的有效性,如果返回的不是被请求的有效完整对象,则返回null,反之返回这个有效的对象,如果是引用返回无效时,则会抛出bad_cast异常。 3.const_cast const_cast用来修改类型的const或volatile属性,具体而言,const_cast会操纵传递对象的const属性,设置或者移除该属性。 4.reinterpret_cast reinterpret_cast用来处理无关类型之间的转换,可以转换任意一个32位整数,包括所有的指针和整数。可以把任何整数转成指针,也可以把任何指针转成整数,以及把指针转化为任意类型的指针,但不能将非32位的实例转成指针。