C++中提供了四种类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。

  • static_cast完全可以代替C风格的类型转换实现基本类型转换。在对象指针之间的类型转换时,可以将父类指针转换成子类指针,也可以将子类指针转换为父类指针,但是如果两个类是不相关的,则无法相互转换。
  • dynamic_cast只能用于对象指针之间的类型转换。可以将父类指针转换成子类指针,也可以将子类指针转换为父类指针,此外转换的结果也可以是引用,但是其并不等同于static_cast。dynamic_cast在将父类指针转换为子类指针的过程中,需要对其背后的对象类型进行检查以保证类型完全匹配,而static_cast不会这么做。只有当一个父类指针指向一个子类对象,并且父类中包含虚函数时,使用dynamic_cast将父类指针转换成子类指针才会成功,否则返回空指针,如果是引用则抛出异常。
  • const_cast可以在转换过程中增加或删除const属性。一般情况下,无法将常量指针直接赋给普通指针,但是通过const_cast可以移除常量指针的const属性,实现const指针到非const指针的转换。
  • reinterpret_cast可以将一种类型的指针直接转换为另一种类型的指针,不论两个类型之间是否有继承关系。此外,reinterpret_cast可以把一个指针转换为一个整数,也可以把一个整数转换成一个指针。reinterpret_cast还经常用在不同函数指针之间的转换。

类型转换操作符(C++)相关推荐

  1. 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.

    呵呵,今天来好好看看着几个转换操作符的用法.以前老是看着眼熟,但是用着手生.今天决定搞定这些个东西. 在C语言中类型转换有几种方式: 1.      (expression). 在表达式外边加括号,由 ...

  2. dim private public static_C++ 强制类型转换操作符 static_cast

    (给CPP开发者加星标,提升C/C++技能) 来源:melonstreet https://www.cnblogs.com/QG-whz/p/4509710.html static_cast是一个强制 ...

  3. C++4种类型转换操作符

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112064 类 ...

  4. C++强制类型转换操作符 dynamic_cast

    dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...

  5. project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast

    dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...

  6. C++风格的类型转换操作符与C风格的强制类型转换

    很多人对C++中的几个类型转换操作符是有些陌生的,并且代码中类型转换也从来都是用C风格的强制类型转换.而且会有些人认为使用这些操作符麻烦,不方便或者没必要.下面是对网上一些资料的总结,主要分析一下两种 ...

  7. C++ 四种类型转换操作符

    在c++中进行类型转换只需要在变量前加上变量类型,并且转换是双向的. 例如: int i = 0: double d = 1.9:int i1 = (int) d: double d1 = (doub ...

  8. C++ 强制类型转换操作符(static_cast、dynamic_cast、const_cast和reinterpret_cast)

    C++中的四种操作符形式类型转换 1.static_cast (静态类型转换) 主要使用场景:适用于将void*转换为其他的指针 int a = 100; void* pv = &a; //i ...

  9. 关于Cpp中的类型转换操作符

    转载于:https://blog.51cto.com/quietheart/614725

  10. C++的四种cast操作符的区别--类型转换

    C++的四种cast操作符的区别 发信站: 水木社区 (Thu Jan 26 21:15:16 2006), 站内 声明 by NetMD: 并非我的原创,来自互联网,且是两篇帖子的合集,个人觉得这样 ...

最新文章

  1. Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
  2. 一盘红烧肉告诉你,本科、硕士和博士区别太大了!
  3. 微服务架构及其最重要的 10 个设计模式!
  4. svn中出现各种感叹号说明
  5. 开发管理 CheckLists(1) -启动项目
  6. PaaS服务之路漫谈(一)
  7. 织梦黑色互联网建站设计模板
  8. CTS(22)---GMS认证-Android8.x新增cts测试(VTS下测试GSI版本)
  9. percona-distribution-mysql-pxc
  10. 如何在M1上运行较早的非本机Intel x86应用
  11. matlab数字图像处理-找不同
  12. Adobe Audition 3.0注册技巧
  13. 个人向常用的一些函数的汇总成一个简易模板
  14. P4 用verilog描述单周期CPU的学习笔记和总结(基于P3)
  15. 苹果电脑计算机找不到打印机,macbook air电脑关于添加打印机的问题
  16. 树莓派4B平台部署 kubeedge (cloudcore)+ isula
  17. 设计模式只是一把锤子,不要拿着到处去敲!
  18. 计算机组装维护教学工作总结,计算机组装与维护教师工作总结_2
  19. Python黑马头条推荐系统第一天 架构介绍和离线计算更新Item画像
  20. css让文字在一行内显示

热门文章

  1. 属性篇(3)—If you love css …
  2. 【Zookeeper系列】Zookeeper命令操作(转)
  3. JAVA并发容器之CopyOnWrite容器
  4. 「每天一道面试题」Redis的优势有哪些?
  5. 工作总结-虚拟机参数
  6. JPA的常用操作和配置总结
  7. GPIO接口解析【转】
  8. WindowsXP、Windows2003本地密码清除方法
  9. cvc-complex-type.2.3: Element 'beans' cannot have character [children] 博客分类: Spring
  10. centos防火墙设置