【c++语言特性—面试必考点】第二篇:4个转型操作符

  1. 最好使用c++的转型操作符

c++的转型操作符有4个:static_cast,const_cast,dynamic_cast,reinterpret_cast

static_cast

//假如你想将int转型为double
int num1,num2;
static_cast<double>(num1)/num2;

const_cast

//const_cast是用来剔除某个对象的常量性或变易性,却无法进行继承体系下的转型操作
class w{};
class swe:public w {};
void updat(swe *psw);
swe sw;
const swe& csw=sw;
updat(const_cast<swe*>(&csw))
   
w *pw=new sw;
updat(pw)//错误,pw是w*,而函数需要swe*

dynamic_cast

//用来在继承体系下的“安全向下转型,或跨系转型动作”并会得知转型是否成功,如果失败将null指针(当转型对象是指针)或者是exception(当转型对象是引用)表现出来
w *pw;
updat(dynamic_cast<swe*>(pw));
//该操作符无法适用于缺乏虚函数的类型上,也不能改变类型的常量性

reinterpret_cast

//该该操作符的转换结果几乎总是与编译平台息息相关,所以它不具有移植性
//该操作符最常用用途是转换“函数指针”类型
//不到走投无路,尽量避免使用函数指针转换
typedef void(*funcptr)();
funptr funcptrarray[10];
int dosomething();
funcptrarray[0]=reinterpret_cast<funcptr>(&dosomething);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值