隐式转换触发时机:
1. 复制
2. 函数形参和实参结合
3. 函数返回值返回时
4. If(condition)语句
5. 混合运算
触发时机2、3本质上是复制。同1。
隐式装换规则
1. 复制操作:等号右边类型-->等号左边类型。
有四种情况:
a) 内置类型—>内置类型:
b) 内置类型—>自定义类型:在自定义类型中查找相应的转换构造函数,找到则调用装换构造函数,没有则报错。
c) 自定义类型—>内置类型:在自定义类型中查找相应的转换函数,有就调用没有则报错。转换函数的详细情况下面说明。
d) 自定义—>自定义
2. 形参和实参结合:实参类型-->形参类型
同上
3. 函数返回值:当前的类型—>声明的类型
同上
4. If(condition)语句中(condition)-->bool
目标类型始终为bool类型。其他的同上。
5. 混合运算:
a) 表达式中不存在自定义类型时,类型从能够表示数的最大范围从小到大转换(即char->short->int->float->double)。
b) 存在自定义数据时不支持隐式转换。如果自定义类型没有提供相应的运算符重载,则编译报错。
6. 如果在转换构造函数或转换函数加explicit修饰,则不能隐式转换。