隐式转换
- 算术转换,最简单的是类型提升
- 标准转换
- 指针转换 int ia[10]; int *p = ia;
数组用作&运算符,或sizeof操作符时,或对数组引用做初始化时,不转为指针
true->1 false->0
可将枚举类型转为整型
如 while(cin >> s)
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
阅读(1199) | 评论(0) | 转发(0) |