类型转换操作符(C++)
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++)相关推荐
- 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
呵呵,今天来好好看看着几个转换操作符的用法.以前老是看着眼熟,但是用着手生.今天决定搞定这些个东西. 在C语言中类型转换有几种方式: 1. (expression). 在表达式外边加括号,由 ...
- dim private public static_C++ 强制类型转换操作符 static_cast
(给CPP开发者加星标,提升C/C++技能) 来源:melonstreet https://www.cnblogs.com/QG-whz/p/4509710.html static_cast是一个强制 ...
- C++4种类型转换操作符
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112064 类 ...
- C++强制类型转换操作符 dynamic_cast
dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...
- project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast
dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用. >>>>>>>>>>>编译器的RTTI设 ...
- C++风格的类型转换操作符与C风格的强制类型转换
很多人对C++中的几个类型转换操作符是有些陌生的,并且代码中类型转换也从来都是用C风格的强制类型转换.而且会有些人认为使用这些操作符麻烦,不方便或者没必要.下面是对网上一些资料的总结,主要分析一下两种 ...
- C++ 四种类型转换操作符
在c++中进行类型转换只需要在变量前加上变量类型,并且转换是双向的. 例如: int i = 0: double d = 1.9:int i1 = (int) d: double d1 = (doub ...
- C++ 强制类型转换操作符(static_cast、dynamic_cast、const_cast和reinterpret_cast)
C++中的四种操作符形式类型转换 1.static_cast (静态类型转换) 主要使用场景:适用于将void*转换为其他的指针 int a = 100; void* pv = &a; //i ...
- 关于Cpp中的类型转换操作符
转载于:https://blog.51cto.com/quietheart/614725
- C++的四种cast操作符的区别--类型转换
C++的四种cast操作符的区别 发信站: 水木社区 (Thu Jan 26 21:15:16 2006), 站内 声明 by NetMD: 并非我的原创,来自互联网,且是两篇帖子的合集,个人觉得这样 ...
最新文章
- Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
- 一盘红烧肉告诉你,本科、硕士和博士区别太大了!
- 微服务架构及其最重要的 10 个设计模式!
- svn中出现各种感叹号说明
- 开发管理 CheckLists(1) -启动项目
- PaaS服务之路漫谈(一)
- 织梦黑色互联网建站设计模板
- CTS(22)---GMS认证-Android8.x新增cts测试(VTS下测试GSI版本)
- percona-distribution-mysql-pxc
- 如何在M1上运行较早的非本机Intel x86应用
- matlab数字图像处理-找不同
- Adobe Audition 3.0注册技巧
- 个人向常用的一些函数的汇总成一个简易模板
- P4 用verilog描述单周期CPU的学习笔记和总结(基于P3)
- 苹果电脑计算机找不到打印机,macbook air电脑关于添加打印机的问题
- 树莓派4B平台部署 kubeedge (cloudcore)+ isula
- 设计模式只是一把锤子,不要拿着到处去敲!
- 计算机组装维护教学工作总结,计算机组装与维护教师工作总结_2
- Python黑马头条推荐系统第一天 架构介绍和离线计算更新Item画像
- css让文字在一行内显示
热门文章
- 属性篇(3)—If you love css …
- 【Zookeeper系列】Zookeeper命令操作(转)
- JAVA并发容器之CopyOnWrite容器
- 「每天一道面试题」Redis的优势有哪些?
- 工作总结-虚拟机参数
- JPA的常用操作和配置总结
- GPIO接口解析【转】
- WindowsXP、Windows2003本地密码清除方法
- cvc-complex-type.2.3: Element 'beans' cannot have character [children] 博客分类: Spring
- centos防火墙设置