算术转换


整型提升

负责把小的整数类型转换为较大的整数类型。

boolchar、sign charunsigned charshortunsigned short,
如果他们所有可能的值都在int中,那么它们会被提升为int, 否则提升为unsigned int类型。
无符号类型的运算对象

 1. 如果无符号数类型不小于带符号数, 则带符号数转换为无符号数
 2. 如果带符号数大于无符号数。如果无符号类型的所有值都能存在该带符号数据中, 则无符号数转换为带符号数进行运算, 否则带符号数转换为无符号数据。

其他隐式类型转换


  1. 数组转换成指针: 在多数用到数组的表达式中, 数组都自动转换为指向数组首元素的指针。除了使用decltype、sizeof、取地址符(&)和typeid例外。
  2. 转换成常量: 可以将一个非常量的指针或者引用赋值给一个常量指针或常量引用。

显示转换


命名的强制类型转换
  1. static_cast:只要不包含底层const, 都可以使用static_cast
  2. const_cast: const_cast只能改变运算对象的底层const
  3. reinterpret_cast:通常为运算对象的位模式提供较底层的重新解释
  4. dynamic_cast:支持运行时类型识别。