C++中的四种类型转换运算符static_cast、dynamic_cast、const_cast和reinterpret_cast的使用
1、上一遍讲述了C语言的隐式类型转换和显示类型转换,C语言之所以增加强制类型转换,就是为了强调转换的风险性,但这种强调风险的方式是比较粗放了,粒度比较大,它并没有表明存在什么风险,风险程度如何。 2、为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范, C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是: 关键字 说明 static_cast 用于良性转换,一般不会导致意外发生,风险很低。 const_cast 用于 const 与非 const、volatile 与非 volatile 之间的转换。 reinterpret_cast 高度危险的转换,这种转换仅仅是对二进制位的重新解释,不会借助已有的转换规则对数据进行调整,但是可以实现最灵活的 C++ 类型转换。 dynamic_cast 借助 RTTI,用于类型安全的向下转型(Downcasting)。 这四个关键字的语法格式都是一样的,具体为: xxx_cast<newType>(data) newType 是要转换成的新类型,data 是被转换的数据。例如: 老式的C风格的 double 转 int 的写法为: double scores = 95.5 ; int n = ( int )scores ; C++ 新风格的写法为: double scores = 95.5 ;