danamic_cast 动态类型转换

----RTTI提供的的操作符

----动态:在执行阶段

----类型转换:检測指针或引用类型,true->转换

----体现价值的地方:用于多态

----如果出现这种情况:

父类A虚函数aa()指针p,子类B指针p1,无关类C指针p2

你的p1和p2在一起传进函数

函数的功能将传进来的指针强转成A类的,调用函数aa()

C类没有继承A,这样会崩溃

前提:1.C和B里没有专门用来鉴别的成员变量

2.不能让C也继承A

----工作中遇到的问题:

用第三方的软件、库,对方有些没完好你有要用出现上面如果的那种情况

解决:

方法一:前提里的那两个绕圈子的方法

缺点:多了个成员变量或者是多复用了一遍父类

方法二:dynamic_cast<T>(T1)动态强制转换(引出主题了)

用:if( p = dynamic_cast<A*>(p1))

p是父类指针 A是父类 p1是子类指针 TRUE

仅仅能这样写,用VS測出的

注意事项:

1.p 和 A*的位置要相应,p处写的指针是A*处的类的,否则

编译的时候报的错

2.p的位置换成子类指针,A*位置换为子类,后面是父类对象

结果:不报错,是false,和我们想要用动态转换类型的结果要背离

3.父类必须有虚函数,否则

4.子类指针必须new,父类无所谓,否则

5.用VS的时候我没有去打开什么RTTI的选项,其它的编译器有,须要设置里打开

打开RTTI执行效率会低,对于JAVA和C#,不存在这个问题(由于本来就非常慢)

6.慎用,移植性低

最新文章

  1. 任意多边形切割/裁剪(附C#代码实现)
  2. python2.7 内置ConfigParser支持Unicode读写
  3. 1、NoSQL概述
  4. SpringMVC文件上传实现
  5. Linux文件打包压缩、解压缩、备份命令使用方法(转载)
  6. [moka同学摘录]Yii2 csv数据导出扩展
  7. BZOJ 1043 下落的圆盘
  8. .30-浅析webpack源码之doResolve事件流(1)
  9. 【django基础补充之URL,视图,模版】
  10. Java之List排序出错
  11. RIP 实验
  12. SoapUI 学习总结-02 断言
  13. 关于11G DataGuard 日志传输的案例
  14. kd-tree题目总结
  15. 设置eclipse代码自动补全功能
  16. http之cdn介绍
  17. XenServer日志清理方法
  18. MYSQL数据库在Windows系统中重置root密码
  19. day 73 初学vue (1)
  20. Git基础 —— Github 的使用

热门文章

  1. Light OJ 1318 Strange Game 组合数+高速幂+分解因子
  2. 幻世(OurDream)2D图形引擎使用教程8——处理操作输入(2)
  3. C# 中 双问号??的用法
  4. 恢复PasswordChar 默认值、取消密码框设置
  5. hdu 4117 GRE Words (ac自动机 线段树 dp)
  6. Silverlight技术调查(4)——完成的调查结果
  7. JSP:JAVA Bean在JSP中的运用
  8. Magento给产品添加“new”或者折扣数量标签 magento new label. discount label
  9. 高仿精仿快播应用android源码下载
  10. 国际化之MessageFormat与占位符