为什么80%的码农都做不了架构师?>>>   

C++与类型转换相关的四个关键字有:const_cast、static_cast、dynamic_cast、reinterpret_cast

C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:
TYPE b = (TYPE)a。

C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。
const_cast,字面上理解就是去const属性。
static_cast,命名上理解是静态类型转换。如int转换成char。
dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。
reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。
4种类型转换的格式,如:TYPE B = static_cast(TYPE)(a)。

const_cast
去掉类型的const或volatile属性。

static_cast
类似于C风格的强制转换。无条件转换,静态类型转换。用于:
1. 基类和子类之间转换:其中子类指针转换成父类指针是安全的;但父类指针转换成子类指针是不安全的。(基类和子类之间的动态类型转换建议用dynamic_cast)
2. 基本数据类型转换。enum, struct, int, char, float等。static_cast不能进行无关类型(如非基类和子类)指针之间的转换。
3. 把空指针转换成目标类型的空指针。
4. 把任何类型的表达式转换成void类型。
5. static_cast不能去掉类型的const、volitale属性(用const_cast)。

dynamic_cast
有条件转换,动态类型转换,运行时类型安全检查(转换失败返回NULL):
1. 安全的基类和子类之间转换。
2. 必须要有虚函数。
3. 相同基类不同子类之间的交叉转换。但结果是NULL。

reinterpret_cast
仅仅重新解释类型,但没有进行二进制的转换:
1. 转换的类型必须是一个指针、引用、算术类型、函数指针或者成员指针。
2. 在比特位级别上进行转换。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。但不能将非32bit的实例转成指针。
3. 最普通的用途就是在函数指针类型之间进行转换。
4. 很难保证移植性。

总结
去const属性用const_cast。
基本类型转换用static_cast。
多态类之间的类型转换用daynamic_cast。
不同类型的指针类型转换用reinterpret_cast。

转载于:https://my.oschina.net/134596/blog/1785972

C++与类型转换相关的四个关键字相关推荐

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

    [面试题]c++有哪四个类型转换相关的关键字? 在C/C++语言中用 (type) value(在C++还可以采用type(value))来进行显式类型转换(explicit type convers ...

  2. C++中,有哪4种与类型转换相关的关键字?各有什么特点?应该在什么场合下使用?

    C++中,四个与类型转换相关的关键字:static_cast.const_cast.reinterpret_cast.dynamic_cast. 一.static_cast 特点:静态转换,在编译处理 ...

  3. c++中4个与类型转换相关的关键字总结

    C++中,四个与类型转换相关的关键字:static_cast.const_cast.reinterpret_cast.dynamic_cast. 1.static_cast------运算符完成相关类 ...

  4. 高德地图四:关键字搜索

    高德地图四:关键字搜索 关键字检索介绍 根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的"肯德基". 注意:关键字未设置城市信息(默认为全国搜索)时,如果 ...

  5. 与Java相关的四十个名字,

    与Java相关的四十个名字--十大产品 Sun JDK :Java的基石 文/莫映 众所周知,流传于市的JDK不单Sun一家,比如IBM的JDK.BEA的JRocket.GNU的GCJ,以及如Kaff ...

  6. 十大事件与Java相关的四十个名字之浅谈篇

    十大事件与Java相关的四十个名字 十大事件 1990-1994:Java缘起 文/孟岩 Larry Wall说,优秀程序员应有的三个特点:懒惰.急躁和傲慢.Java就是诞生在一群懒 惰.急躁而傲慢的 ...

  7. Android camera 相关术语(四) 之  变焦和对焦的区别VCM 闭环和开环在硬件上有什么区别

    Android camera 相关术语(四) 之  变焦和对焦的区别VCM 闭环和开环在硬件上有什么区别 VCM 闭环马达(即close loop)与开环马达(即open loop)一般有两个硬件上的 ...

  8. Android音频相关(四)设置铃声流程总结

    本文主要介绍的是设置铃声的流程,在流程梳理清楚后解决问题也有大致的方向了. 一.要点概述 补充知识点: frameworks/base/packages/SettingProvider/中的生成的数据 ...

  9. 与Java相关的四十个名字 (2005.08.18 来自:《程序员》杂志)

    十大事件 1990-1994:Java缘起 文/孟岩 Larry Wall说,优秀程序员应有的三个特点:懒惰.急躁和傲慢.Java就是诞生在一群懒惰.急躁而傲慢的程序天才之中. 1990年12月,Su ...

最新文章

  1. typescript调用javascript URI.js
  2. 在 Linux 上给用户赋予指定目录的读写权限
  3. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 2 Optimization methods
  4. 有了这篇网络排错思路大总结:我帮了不少同事~
  5. 远程java接口说明
  6. java 监听器实现原理
  7. flink-faker用法示例(还没弄完,到时候再说)
  8. ssh端口转发(之kettle ssh方式连接数据库)
  9. 23种设计模式之模板方法
  10. 用Arduino+OSC建立一个iPad铁路王国巡视机
  11. 微信公众号推送模板跳转小程序
  12. Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
  13. 在运维日常工作过程中遇到的一些问题,以及最终的解决方法!!(持续更新帖)
  14. cad断点快捷键_CAD打断命令怎么使用,快捷键是什么
  15. 界面设计中如何增强CTA按钮召唤力?
  16. CUDA编程实现求解单源Bellman-Ford最短 路径算法
  17. 2018 ISCC re\web\misc WP
  18. java发邮件要收费吗,2年以上经验必看
  19. FluentData
  20. SDNU 1221

热门文章

  1. 计算机视觉应用的简称,计算机视觉应用之图像检索任务简单介绍
  2. 多少分才能考上重庆计算机学校,重庆多少分能上985大学?重庆985院校分数线是多少?(2021年参考)...
  3. python只能对列表进行切片_Python3:类型错误:列表索引必须是整数或切片,而不是s...
  4. git怎么上传文件到别人的仓库_Git将本地代码上传至远程仓库
  5. 2个网页跳来跳去_怎么写最优化的网页标题标签(Title Tag)?
  6. Python的zip
  7. 笔记:Matrix completion by Truncated Nuclear Norm Regularization
  8. 【总结】循序渐进,有三AI不得不看的技术综述(超过100篇核心干货)
  9. 【每周CV论文推荐】 初学活体检测与伪造人脸检测必读的文章
  10. 中国智能控制器行业运营分析与竞争趋势展望报告2022-2027年版