C++类型转换详解

本文详细介绍了C++中的类型转换,包括隐式类型转换和显式类型转换。隐式转换包括算数转换、初始化、赋值、函数调用等情况。算数转换中,小整数类型提升为较大整数类型,不同类型的算术运算会转换为共同类型。显式类型转换涉及static_cast、const_cast、reinterpret_cast和dynamic_cast,其中dynamic_cast支持运行时类型识别。
摘要由CSDN通过智能技术生成

类型转换

在C++语言中,某些类型之间是有关联的,如果两种类型有关联,那么它们就可以相互转换,同理,如果两种类型可以相互转换,那么它们就是有关联的。
在C++语言中,类型转换被分为隐式类型转换显式类型转换

隐式类型转换

隐式类型转换:由编译器根据类型转换规则设法将运算对象的类型统一,编译器自动执行,无需程序员的介入

会发生隐式类型转换的情况:

  1. 在大多数表达式中,比int类型小的整形值提升为较大的整数类型。
  2. 在条件语句中,非布尔值转换成布尔值。
  3. 初始化过程中,初始值转换成变量类型。
  4. 赋值语句中,赋值号右侧的运算对象转换成赋值号左侧运算对象的类型。
  5. 如果算术运算或者关系运算的对象有多种类型,需要被转化为同一类型。
  6. 函数调用时也会发生隐式类型转换。
  7. 数组转换成指针,在大多数用到数组的表达式中,数组名自动转换成指向数组首元素的指针。但也有例外情况:
  • 当数组被用做decltype关键字的参数,其返回类型为由n个某一类型构成的数组,例如:int ia[10]{};decltype(ia)返回的是有10个整数构成的数组。
  • 作为取地址符&,sizeof及typeid等运算符的运算对象时上述类型的转换也不会发生。
  • 用一个引用来初始化数组,上述类型的转换也不会发生。例如:int ia[10
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值