C++类型转换

C语言中对内置类型可以进行强制转换,但是这种转换是不安全的。

所以一般,目前我们推荐使用C++中的cast函数进行类型转换。

基本数据类型之间的转换

类型的层次转换

static_cast (编译类型检查)

1、基本数据类型之间的转换。如int转char,int转enum等。使用中的转换安全性需要开发者自己去保证。

如int转换为char。那么static_cast只是纯粹的截断,把int的低8位的内容复制到char中,并直接抛弃高位;如果int >127 或 < -127 那么就会出现数据丢失。

2、把空指针类型转换成任意其他类型的空指针。

3、把任何类型的表达式类型转换成void类型。

4、用于类层次结构中父类和子类之间的指针和引用的转换。

对于类层次结构中的转换有两种转换:上行转换和下行转换。

对于static_cast,上行转换时是安全的,但是下行转换是危险的,但是在编译时并无法发现问题。

dynamic_cast(动态类型检查)

1、主要是用于类层次结构之间的类型转换,由于具有运行时类型检查,因而可以保证下行转换的安全性,即转换成功就返回正确类型指针,转换失败就返回NULL。

而static_cast就不是这种类型安全的。

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页