C++隐式类型转换

一、什么是隐式转换?

隐式转换是编译器完成的,帮助程序继续完成任务的一个手段。

二、怎么使用隐式转换?

编译器自动完成转换,需要特别注意转换的效果是否符合预期。

三、什么时候发生隐式转换

  • 条件语句中,非bool转换成boolif(998)->if(true)
  • 初始化语句中,初始值转换成变量类型 int pi=3.14->int pi=3
  • 赋值语句中,右侧对象转换成左侧对象,double pi;pi=3->double pi=3.000000000000000
  • 关系、算术运算符类型不一样,都转换成同一类型。int + double + double->double+double+double
  • 函数调用时,实参转换成形参类型。
  • 构造函数仅有一个参数且没有被声明为explicit的函数,出现参数不匹配时进行的一步转换

四、分类

4.1 算术类型隐式转换

对象的类型定义了对象所能包含的数据和参与的运算,一种运算能够被大多数对象支持靠的就是转换,将操作数两边的转成同一类型再进行运算。如:

double+int->double+double

一个重要规则就是:运算符对象将会转换成两者中最宽的类型。

4.2 初始化隐式转换

初始化时,初始值向声明的变量类型转换。

4.3 其他类型隐式转换
  • 数组转为指针。
  • 指针的转换。整数0(NULL)或nullptr转换成任意指针;非常量指针转换成void *’;任意指针转换成const void *,继承关系基类和派生类转换;指针转换成bool(条件语句)
  • 转换成常量。int i;const int &j=i,“虽然你不是常量,但是我可以把你看成是常量”。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值