类型转换

1.何时发生隐式类型转化:
(1)在混合类型的表达式中,其操作数被转换成为相同的类型:
int ival;
double dcal;
ival >= dval; //ival converted to double
(2)用作条件表达式被转换为bool类型:
int ival;
if(ival)    //ival converted to bool
while(cin)  //cin converted to bool
(3)用以表达式初始化某个变量,或将以表达式赋值给某个变量,则该表达式被转化为该变量的类型

2.其他隐式转化
(1)指针转换
使用数组时,大多数情况下数组都会自动转换为指向第一个元素的指针;
例外情况:1.数组用作取地址操作符的操作数或sizeof操作符的操作数
    2.用数组对数组的引用进行初始化时,不会讲数组转化为指针。
(2)转换为bool类型   算术值和指针值都可以转换为bool类型
(3)算术类型与bool类型的转换   可将算术对象转换为bool类型,bool对象也可转换为int型。
(4)转换与枚举类型    C++可自动将枚举类型的对象或者枚举成员转换为整型,
(5)转换为const对象   当使用非const对象初始化const对象的引用时,系统将非const对象转换为const对象
(6)由标准库类型定义的转换  类类型可以定义由编译器自动执行的类型转换。

3.显式转换  强制类型转换  static_cast  dynamic_cast  const_cast  reinterpret_cast  
命名的轻质类型转换:
cast-name<type>(expression);
cast-name: static_cast dynamic_cast const_cast reinterpret_cast 
type:转换的目标类型
expression:被强制转换的值。
1.dynamic_cast: 支持运行时识别指针或引用所指向的对象
2.const_cast:转换表达式的const性质
3.static_cast:编译器隐式执行的任何类型都可由static_cast显式完成
4.reinterpret:通常为操作数的位模式提供较低层次的重新解释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值