c++ 类型转换
算术转换
整型提升
负责把小的整数类型转换为较大的整数类型。
bool、char、sign char、unsigned char、short和unsigned short,
如果他们所有可能的值都在int中,那么它们会被提升为int, 否则提升为unsigned int类型。
无符号类型的运算对象
1. 如果无符号数类型不小于带符号数, 则带符号数转换为无符号数
2. 如果带符号数大于无符号数。如果无符号类型的所有值都能存在该带符号数据中, 则无符号数转换为带符号数进行运算, 否则带符号数转换为无符号数据。
其他隐式类型转换
- 数组转换成指针: 在多数用到数组的表达式中, 数组都自动转换为指向数组首元素的指针。除了使用decltype、sizeof、取地址符(&)和typeid例外。
- 转换成常量: 可以将一个非常量的指针或者引用赋值给一个常量指针或常量引用。
显示转换
命名的强制类型转换
- static_cast:只要不包含底层const, 都可以使用static_cast
- const_cast: const_cast只能改变运算对象的底层const
- reinterpret_cast:通常为运算对象的位模式提供较底层的重新解释
- dynamic_cast:支持运行时类型识别。
还没有评论,来说两句吧...