- 算术转换,最简单的是类型提升
- 标准转换
- 指针转换 int ia[10]; int *p = ia;
- 其他类型转换为Bool型
- bool型转为整形
- 枚举类型的转换
- 标准库定义的类型
3.类类型转换
构造形参类型->类类型
可用单个实参调用的构造函数定义了从形参类型到该类类型的隐式转换。
class A
{
A(int a);
}
void f(A &v);
f(20);//由于隐式转换,相当于f(A(20))
若在构造函数前加explicit,则会禁止隐式转换
class A
{
explicit A(int a);
}
void f(A &v);
f(20);//错误,隐式转换被抑制
建议单参数构造函数应禁止隐式转换。
类类型->其他类型
类型转换函数
形式: operator type(),返回type类型数据
class A
{
explicit A(int a);
operator int();
}
注意:类类型转换后不可再跟另一个类类型转换
显示转换
dynamic_cast
static_cast
const_cast
reinterpret_cast