博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
static_cast,const_cast,dynamic_cast,reinterpret...
阅读量:6262 次
发布时间:2019-06-22

本文共 832 字,大约阅读时间需要 2 分钟。

hot3.png

标准C++不仅支持C风格类型转换符,还定义了以下四种类型转换符:

static_castconst_castdynamic_castreinterpret_cast

定义这些类型转换符是为了提供更好的类型检查。

一、C风格类型转换符的缺点

C++支持以下两种形式的C风格类型转换:

int age=(int)sqrt(foo/3.25);     
int age=int(sqrt(foo/3.25));

但是,这样会使程序的意图不明确,因为相同的语法你却使用不同的类型转换符…

(译者:不是很明白这一段是什么意思,希望哪位大侠能更改一下)

二、四种类型转换符

1.static_cast是这四种中最常用的。它可用于任何隐含的类型转换——一般来说,当一个隐含的类型转换导致信息丢失时,编译器就会输出警告信息,但你如果使用static_cast的话,编译器就不会输出这些警告信息。static_cast可以用于类类型的向上或向下转换(dynamic_cast也可以,但不同的是,static_cast不会进行动态类型检查,因此它的安全性要由程序员来保证)。

2.const_cast可以用来移除一个变量的const或volatile属性。

3.dynamic_cast可以用来对一个多态的指针或引用进行类类型向上、向下转换。注意:dynamic_cast进行动态类型检查,因此,在对一个指针进行类型转换时,如果对象不是编译器所期望的类型,它将会返回NULL;在对引用进行类型转换时,它会抛出一个std::bad_cast异常。

4.reinterpret_cast用于两个不相关类型之间的类型转换。这个关键词在我们需要把类型映射回原有类型时用到它.我们映射到的类型仅仅是为了故弄玄虚和其他目的,这是所有映射中最危险的(这句话是C++编程思想中的原话)。

 

相关链接: 

译自:

转载于:https://my.oschina.net/xiangxw/blog/15672

你可能感兴趣的文章
Oracle SID爆破工具SidGuess
查看>>
批处理常用命令总结2
查看>>
Android -- 自定义View小Demo,绘制钟表时间(一)
查看>>
信息检索Reading List
查看>>
自动精简配置&重复数据删除核心技术点及其经济效应探究
查看>>
cncert网络安全周报35期 境内被植入后门的政府网站112个 环比上涨24.4%
查看>>
物联网到底是不是泡沫,且看英特尔交出的答案
查看>>
IPv6太落后了:中国加速服务器援建
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>
oracle的drop命令
查看>>
设计与梳理企业二级流程的路线方法
查看>>
垃圾回收概念与算法
查看>>
TFS实现需求工作项自动级联保存
查看>>
springmvc 4.x 处理json 数据时中文乱码
查看>>
Python练习(day7)
查看>>
网络工程师笔试题总结
查看>>
飞舞的蝴蝶
查看>>
Async Performance: Understanding the Costs of Async and Await
查看>>
POJ2771_Guardian of Decency(二分图/最大独立集=N-最大匹配)
查看>>
Cocos2d-x之MenuItem
查看>>