【寒江雪】C++四种类型转换
来源:互联网 发布:农业科技网络书屋网站 编辑:程序博客网 时间:2024/05/29 17:25
C++四种类型转换
C++兼容自C语言,C语言中的强制类型转换方式自然也会有,但C++有新的四种类型转换方式,分别是以下四种:
- reinterpret_cast
- static_cast
- dynamic_cast
- const_cast
reinterpret_cast
reinterpret_cast能够将一种指针类型转换为另一种指针类型,能够将指针类型转换为整数类型。反过来也成立.这种转换就比较自由,但是是不安全的,需要使用者在使用它时能够清楚地知道自己在做什么。
它可以强制给指针赋值,直接按二进制整数形式将地址赋值给任意类型的指针形式。而在使用的时候,即便两个类没有继承关系而有相似的结构,在编译之后能够有相同的二进制序列的话,转换后的指针,仍然能正常使用,但如果没有相同的二进制序列,访问就会混乱,得到的结果就无法满足预期。
但自由的语法会带来自由的思想,怎么使用是使用它的人的想法。
static_cast
static_cast能够支持隐式转换和相反的动作,是与C风格最接近的转换类型。它能够将基类指针转换为派生类指针,也能够将派生类指针转换为基类指针。因此这种转换方式不能说是安全的,需要使用者在使用它的时候想一想。
dynamic_cast
dynamic_cast是一种只针对指针和引用类型的转换方式,同时要求被转换的类型具有多态性,也就是类必须具有虚函数,否则会报语法错误。
它允许将派生类指针转换为基类指针,允许将基类指针转换为派生类指针,将基类指针转换为派生类指针的时候,会进行动态检查,如果转换失败,得到的结果是NULL。
它允许将派生类引用转换为基类引用,允许将基类引用转换为派生类引用,如果转换失败,会抛出bad_cast异常。
const_cast
const_cast是一种取消变量const属性的转换方式,也是一种增加变量const属性的转换方式。
验证代码
验证代码我会上传到github上,这几天复习C++基础知识,巩固基础语法和基础算法与基础数据结构。
github传送门
Copyright© by 寒江雪1719
Date:2017.8.19
- 四种类型转换
- 四种类型转换
- 四种类型转换
- 四种类型转换
- 【寒江雪】C++四种类型转换
- C++四种类型转换
- 四种类型转换 cast
- C++四种类型转换
- c++四种类型转换
- C++四种类型转换
- cpp四种类型转换
- C++四种类型转换
- C++四种类型转换
- c++四种类型转换
- c++四种类型转换
- C++ 四种类型转换
- C++四种类型转换
- c++四种类型转换
- 20170809.XXX系统设计讨论会总结
- Java类加载过程
- 双栈排序
- springmvc+redis缓存问题(添加@Cacheable无效问题)
- POJ 1741 Tree (男人八题
- 【寒江雪】C++四种类型转换
- Groovy语法之操作符
- treap的合并
- 自己定义的下拉多选的链表匡
- Spring Boot AOP代理
- 从九寨沟地震 看那些年数据中心受到的伤害
- 关于easyui datagrid 中日期显示问题
- el表达式的一些小问题:javax.el.PropertyNotFoundException: Property 'Title' not found on type
- 博客即将开始~