4个类型转换关键字
2015-07-06 19:20
260 查看
const_cast
static_cast
dynamic_cast<>
reienterpret_cast<>
经常不被使用的是3和4,重点说之。
dynamic_cast在类的继承关系的前提下使用,没有继承关系的类之间转换会为空。其中虚函数的特性非常重要,在这里重点体现;
如果没有虚函数,该转换也会发生问题。(经常在书上看到RTTI特性和此相关的说明,可能就是这个问题)
1.基类转换到子类,发生错误;(其实也不是错误,就是为空了)(安全性检测的重要性,也就是说不要把基类转换到子类)
2.子类转换到基类,正确,也就是常说的向下转换,调用的也是相应的虚函数;
(测试中发现问题,很简单,用到该关键字就要考虑继承的类之间是否有虚函数表)
reienterpret_cast:
可以把一个指针转换为非指针,同理也可以把非指针转换为指针,很神奇,慎用之。
static_cast
dynamic_cast<>
reienterpret_cast<>
经常不被使用的是3和4,重点说之。
dynamic_cast在类的继承关系的前提下使用,没有继承关系的类之间转换会为空。其中虚函数的特性非常重要,在这里重点体现;
如果没有虚函数,该转换也会发生问题。(经常在书上看到RTTI特性和此相关的说明,可能就是这个问题)
1.基类转换到子类,发生错误;(其实也不是错误,就是为空了)(安全性检测的重要性,也就是说不要把基类转换到子类)
2.子类转换到基类,正确,也就是常说的向下转换,调用的也是相应的虚函数;
(测试中发现问题,很简单,用到该关键字就要考虑继承的类之间是否有虚函数表)
reienterpret_cast:
可以把一个指针转换为非指针,同理也可以把非指针转换为指针,很神奇,慎用之。
相关文章推荐
- jQuery.fill 数据填充插件
- Java知多少(完结)
- leetCode 21.Merge Two Sorted Lists (合并排序链表) 解题思路和方法
- hdu 4507 - 吉哥系列故事——恨7不成妻(数位dp)
- C++实现字符串之模式匹配(一)
- nyoj 1192——Salvation——————【搜索】
- Eclipseproject标准的文件夹层次
- 【从零单排之微软面试100题系列】04之二叉树中和为某一值的路径
- ClassesTest
- java 中构建可执行 jar 包的几种方式
- etl工具,kettle实现了周期
- ClassesTest
- OC中的单例模式
- 多对多
- logistic regression 最基础的分类算法
- 1451 - Average(数形结合)
- 多对多
- C#学习笔记(五):泛型
- plsql中异常的传递
- TP接口token