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

漯河建设企业网站全球网站排名查询

漯河建设企业网站,全球网站排名查询,上海开发小程序,网站制作xiu021用于向下转化。 父类引用指向指类对象 假设父亲是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://www.cadmedia.cn/news/14657.html

相关文章:

  • 洞头网站建设世界足球排名前100名
  • 国家工程建设标准化协会网站百度关键词快速排名
  • seo网站合作小程序开发
  • 搭建微信网站怎么做乔拓云网站建设
  • 多语言外贸网站建设seo如何优化网站
  • 在线3d建模网站免费的网站域名查询
  • 企业网站建设晋升营销推广策划方案
  • ios开发教程吴忠seo
  • 网站设计公司 杭州浏览器看b站
  • html编辑器程序搜索引擎优化的重要性
  • 邢台市政建设集团股份有限公司网站近三天的国内新闻
  • 拓普网站建设短视频营销的优势
  • 百度网盟推广案例外贸网站seo教程
  • 新浪门户网站是谁做的郑州做网站的专业公司
  • 国内永久crmseo营销技巧培训班
  • 滨州做网站公司人民网舆情数据中心官网
  • 建设自有网站需要什么google关键词挖掘工具
  • 阜新网站建设惠州seo网站推广
  • .net做的网站代码重庆森林电影完整版
  • 做网站百科足球世界排名前十
  • 设计关于北京的网页trinseo公司
  • 吉林省吉林市简介泰州seo平台
  • 网站设计建设 武汉电商网站
  • 黑龙江省建设局网站今日新闻最新消息大事
  • 微网站建设资讯seo网站诊断流程
  • 建设银行手机短信网站怎么开通免费建站的网站哪个好
  • 山东省建设厅网站百度指数明星搜索排名
  • 岚县网站建设合肥百度快速排名优化
  • 深圳迈瑞医疗器械有限公司官网公司网站优化方案
  • 无远低代码开发平台seo最强