C++ 多态向上转型详解

发布时间:2024年01月03日


【极客技术传送门】 : 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
群内专注 - 问题答疑,项目外包,技术研究

文章来源:https://blog.csdn.net/Engineer_LU/article/details/135363585
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。