当前位置: 首页 > wzjs >正文

青岛建立网站电话柳州做网站有kv

青岛建立网站电话,柳州做网站有kv,免费 网站模板,波哥昆明网站建设用于向下转化。 父类引用指向指类对象 假设父亲是a, 子类是b. B* pb new B; 子类对象 A* pa 父类引用指向子类对象, 那么向上转化 Apa pb 这个是自动完成的,隐式转化,不需要dynamic_cast 向下转化指的是 A pa new B。 这个是指向子类对象…

用于向下转化。 父类引用指向指类对象

假设父亲是a, 子类是b.
B* pb = new B; 子类对象
A* pa 父类引用指向子类对象,
那么向上转化 Apa = pb 这个是自动完成的,隐式转化,不需要dynamic_cast
向下转化指的是
A
pa = new B。 这个是指向子类对象的父类引用, 转化为子类引用
B *b = dynamic_cast<B*>(pa)
总结就是 父类 向下转化为子类, 但是父类指针本身是指向子类的。
而不是说指向父类的指针转化为指向子类的指针,这个是无法转的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 举例说明用法

首先,类X和类A都是基类,各自有虚析构函数。然后,类B公有继承自A,类C公有继承自B,所以C的继承链是C→B→A。接着,类D公有继承自X和C,也就是多重继承,D的基类是X和C,而C又继承自B和A。因此,D的继承结构应该是D同时继承X和C,而C又继承B和A。所以D的完整继承链是D→X,D→C→B→A。

现在来看各个选项:

选项A:D* pd = new D; A* pa = dynamic_cast<A*>(pd);
这里pd是D类型的指针,转换为A*。因为D继承自C,而C继承自B和A,所以D是A的派生类。因此,从D到A是上行转换(upcast),这种转换是安全的,不需要dynamic_cast,直接隐式转换即可**(父类引用指向子类对象,安全的,直接隐式转化)**。但即使使用dynamic_cast,结果也是有效的,pa会指向D对象中的A子对象部分。所以选项A的转换是合法的,结果成功。

选项B:B* pb = new B; D* pd = dynamic_cast<D*>(pb);
这里pb是B类型的指针,尝试转换为D*。因为D继承自C,而C继承自B,所以D是B的派生类。但pb实际指向的是B对象,而不是D对象。dynamic_cast在下行转换(downcast)时,会检查对象的实际类型是否为目标类型。由于pb指向的是B对象,而不是D对象,所以转换失败,返回nullptr。因此选项B的转换是合法的,但结果失败,pd为nullptr。

选项C:A* pa = new D; X* px = dynamic_cast<X*>(pa);
pa是一个指向D对象的A指针。D继承自X和C,而C继承自B和A。因此,D对象中包含X和A的子对象。这里要将A转换为X。由于A和X之间没有直接的继承关系,但因为D同时继承了X和C(而C继承自A),所以D对象中包含X和A的子对象。dynamic_cast在这种情况下,可以进行跨基类的转换,前提是两个基类都在同一个对象中。这里,pa指向的是D对象的A子对象,要转换到X子对象,需要通过D的类型信息。由于D确实继承自X,所以dynamic_cast应该可以找到X的子对象,转换成功。因此选项C的转换是合法的,结果成功,px指向D对象的X子对象。

选项D:A* pa = new C; C* pc = dynamic_cast<C*>(pa);
pa是一个指向C对象的A指针。因为C是A的派生类(C→B→A),所以这里从A到C是下行转换。由于pa实际指向的是C对象,dynamic_cast会检查类型是否匹配。因为C确实是A的派生类,所以转换成功,pc指向原来的C对象。所以选项D的转换是合法的,结果成功。

不过,我需要再仔细检查选项D的描述是否正确。实际上,C是A的派生类,所以存在继承关系。因此,选项D的dynamic_cast是合法的,且转换成功。

3. 原理说明:A* pa = new D; X* px = dynamic_cast<X*>(pa); 通过画出内存布局来解释,为什么可以使用转化

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

B* pb = new B; D* pd = dynamic_cast<D*>(pb); 通过内存布局分析这个为甚不可以转化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


文章转载自:

http://4CzeEEx2.wgqtj.cn
http://9bnm0V3e.wgqtj.cn
http://3vzYnUWX.wgqtj.cn
http://2Qw4twXi.wgqtj.cn
http://8LOFoNuo.wgqtj.cn
http://etSpyLRG.wgqtj.cn
http://ILs88C6o.wgqtj.cn
http://A87ATQmw.wgqtj.cn
http://lKnhdWpb.wgqtj.cn
http://bSSs6nF2.wgqtj.cn
http://Ko2C7Sen.wgqtj.cn
http://N46pJOO8.wgqtj.cn
http://7Fgr51yI.wgqtj.cn
http://g7nanA46.wgqtj.cn
http://ZArBarLV.wgqtj.cn
http://9W9ULpj7.wgqtj.cn
http://S5BZstMy.wgqtj.cn
http://VSM78BSu.wgqtj.cn
http://9AM2uJ6P.wgqtj.cn
http://cnplZ02R.wgqtj.cn
http://01zJNP2M.wgqtj.cn
http://7GXwfzDJ.wgqtj.cn
http://w7Ec4nhN.wgqtj.cn
http://1R9w7lGA.wgqtj.cn
http://k7BfT7wU.wgqtj.cn
http://F9l39k0K.wgqtj.cn
http://b31FCT63.wgqtj.cn
http://k8MBxIWA.wgqtj.cn
http://7qkqt9Av.wgqtj.cn
http://nbnmBLhS.wgqtj.cn
http://www.dtcms.com/wzjs/748253.html

相关文章:

  • 网站商城怎么做广州企业网站推广
  • 外贸黄页网站建设工程项目管理中心
  • 跨境电商网站开发技术wordpress拖拽式编辑器
  • 公司网站建设教程注册城乡规划师有什么用
  • 升级wordpress 错误:连接服务器时出错_请检查设置.鞍山seo公司
  • 可以帮忙做网站做公司微信网站开发需要什么知识
  • 嘉兴云推广网站网络设计师的发展前景
  • 公司做个网站最近一周的热点新闻
  • 门户网站的重要性网站开发项目的规划与设计文档
  • 做网站需要规划好什么做网站会有侵权
  • 模板网站跟仿站的区别展览展示搭建设计
  • pc和移动版网站学php搞网站开发
  • 网站域名重定向西安seo网站排名优化公司
  • 做网站亏本河东区腾讯网站建设
  • 济南建设网站公司wordpress 漏洞攻击
  • 找网站建设需要问什么企业工商登记信息查询系统
  • wordpress 刷评论广州网站建设网站优化网站推广
  • 可以免费生成网站的软件网站开发亿玛酷适合5
  • 公司网站域名注册费用菏泽网站建设多少钱
  • 宝洁网站建设评价佛山企业网站建设咨询
  • 网络营销网站建设论文开发公司已开发完成楼盘土地证能否出让
  • 张家口市建设局网站网站建设 智能建站
  • 中小企业网站建设服务公司做网站的挣钱么
  • 免费商城版网站制作wordpress xampp 本地 慢
  • 做网站语言最好网站建设弹窗代码
  • 网站开发厦门蔚县网站建设wl17581
  • 网站建设论文任务书网校课程
  • 网站建设情况调查表正鹏建设工程有限公司网站
  • 前端做任务的网站推广文案模板
  • 建网站找那家企业好建设公司网站建设报价