c++有哪四个类型转换相关的关键字

 我来答
电商运营的机会
2017-06-08 · 知道合伙人互联网行家
电商运营的机会
知道合伙人互联网行家
采纳数:436 获赞数:998
潭州教育网络科技有限公司最佳电商运营总监。

向TA提问 私信TA
展开全部
1、const_cast
号称唯一具有常量性移除的转型操作符,这个说法实在很废话,不解释。平时几乎没有用过,遇到需要这个关键字的时候,都是直接修改了接口的类型,也不会去用这个关键字,一般来说老接口设计有问题啊。明明是const的,非得转成non-const实在别扭。
2、dynamic_cast
号称安全向下转粗友型(safe downcasting),就是把一个父类型转成它的子类型,如果不是父子关系则会返回0,比如一种用法:
assert(dynamic_cast<derived*>(pBase));
曾经认为是唯一好裂辩用又常用的转型操作符,但在吃过亏后发现也要三思而后用,比较喜欢无脑,所以不再喜欢它了。
不止一本书上说这个操作符有性能问题,但是它们没有给出具体的度量值,也不会告诉你性能分析软件没法将它的耗时与语句直接对应上,比如会把使用这个操作符的语句耗时显示在unknown分组中,太操蛋了。google的C++编码规范中也明确禁用此关肆凳缺键字,可惜我仍然还没反应过来,吃了大亏。
总之,热点程序里面不要用。
3、static_cast
把编译器隐式执行的转型搞成显式的,特别是有告警的类型转换加上它就ok啦,比如double转int。偶尔用用,敲这么多字,还是C风格省心……
4、reinterpret_cast
对操作数的位模式做转化,比如把一个结构体转成char*。从来没用过,这名字实在陌生得紧,不看书真心想不起来。一般都会把源操作内存块转成void,然后使用的地方再找到想要的字段,转成想要的类型,工作中还没见过代码直接用的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式