C++ 多态向上转型详解


【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485


1 . 前言

  • 此篇博文详解C++的多态向上转型
  • 平台 : Qt

2 . 多态

【Q】什么是多态?
【A】解释如下 :

  1. 通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。在编程语言和类型论中,多态指为不同数据类型的实体提供统一的接口。多态类型可以将自身所支持的操作套用到其它类型的值上。
  2. 比如父亲有一个儿子,父亲是荒古圣体,儿子自己修炼出了混沌体同时也继承了父亲的荒古圣体,有一天,父亲受伤了,儿子把混饨体的真血移植给父亲,父亲因此可以使用混饨体的能力,这就是向上转型,儿子的能力移植到父亲身上

3 . 向上转型

【Q】什么是向上转型?
【A】儿子把混沌体的真血移植给父亲,父亲阴差阳错下可以用儿子独有的能力,这样不是向下转型吗,为什么说是向上,这里的向上指的是儿子的能力赋予了父亲,因此称为向上转型
在这里插入图片描述

上图中最后父亲可以调用儿子混沌体的能力,但这有个条件,就是父亲受伤了(如图中Father的func函数是虚函数),因此当移植了儿子的真血后,可以使用儿子的能力,但是如果父亲没有受伤呢?(Father的func函数不是虚函数),如下图

在这里插入图片描述

父亲没受伤,这时候即使移植了儿子的真血,依然用不到儿子的部分能力,因为把相同的部分排斥了,就好比父亲压根不虚,这时候移植了儿子的真血后,会排斥新来的真血,下次运功时调用的是自己的能力!所以父亲即使移植了儿子混沌体的真血后,依然使不出混沌体的全部能力,身体的一部分会继续使用荒古圣体的能力!

4 . 总结

向上转型是把子类的能力给到父类,基于父类能否调用子类的能力,看父类自身的函数是不是虚函数,若是虚函数,则可以使用子类的能力,注意这里提到的能力,是父类子类都有接口,只是接口的具体实现不一样,如果父类没有子类的接口,却去调用子类的接口,在向上转型里是禁止的。

向上转型父类如果自己有实现优先调用自己的实现,如果自身虚函数,则调用子类方法

技术交流QQ群 : 745662457
群内专注 - 问题答疑,项目外包,技术研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客 - L U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值