C++内置类型转换规则主要包括以下几种:
-
整数提升(Integer Promotion):在表达式中,如果既有整型又有浮点型,那么整型会被自动转换为浮点型。例如,当整数和浮点数相加时,整数会被转换为浮点数。
-
浮点数提升(Floating Point Promotion):在表达式中,如果既有整型又有浮点型,那么浮点型会被自动提升为整数类型,整数位数为浮点数的位数。例如,当整型被赋值给浮点数时,整数值会被转换为浮点数。
-
隐式类型转换(Implicit Type Conversion):C++支持隐式类型转换,包括:
- 整数到浮点数的转换
- 浮点数到整数的转换
- 字符串到数值类型的转换
- 数值类型到字符串的转换
- 指针之间的转换(包括向上转型和向下转型)
-
显式类型转换(Explicit Type Conversion):C++支持显式类型转换,包括:
- 静态类型转换(Static Cast):用于将一种类型转换为另一种类型,例如
int
到float
。 - 动态类型转换(Dynamic Cast):用于在类的继承层次结构中进行安全的向下转型。
- 常量类型转换(Const Cast):用于修改类型的常量性或易变性,例如将
const int
转换为int
。 - 重解释类型转换(Reinterpret Cast):用于将一种类型的指针转换为另一种类型的指针,例如将
int*
转换为char*
。
- 静态类型转换(Static Cast):用于将一种类型转换为另一种类型,例如
-
类型转换运算符(Type Conversion Operators):C++支持自定义类型转换运算符,例如将一个类转换为另一个类。这些运算符可以是隐式的或显式的。