类型转换是项目中常使用的一种语法规则,几乎每个编程语言都不可避免的涉及到这方面,懂得动态的类型转换能够快速的解决一些棘手的难题,并且迸发出出人意料的效果。当然在面试当中也是作为一个频率略高的话题。
尤其在C++当中,面向对象最大的特点是多态性,而要很好的使用这个特性,避免不了指针和引用,避免不了类型转换的问题。
为什么不使用C的强制转换?
C的强制转换表面上看起来功能强大什么都能转,但是转化不够明确,不能进行错误检查,容易出错。
C 风格(C-style)强制转型如下:
(T) expression 或
T(expression) //函数风格(Function-style)
两种形式之间没有本质上的不同。
对于具有转换的简单类型而言C 风格转型工作得很好。然而,这样的转换符也能不分皂白地应用于类(class)和类的指针。ANSI-C++标准定义了四个新的转换符:reinterpret_cast, static_cast, dynamic_cast和const_cast,目的在于控制类(class)之间的类型转换。
reinterpret_cast
很多人可能知道这个几乎什么都可以转,比如将int转指针,可能会出问题,尽量少用。
其实reinterpret_cast是个很强大的运算符,因为它可以无视种族隔离,随便搞。但就像生