【C++】多态-最全解析(多态是什么?如何使用多态?多态的底层原理是什么?)

2024-07-21 1329阅读

目录

一、前言

二、多态是什么?

三、多态的定义及实现 

🔥 多态的构成条件🔥

🔥 虚函数的重写🔥

🔥虚函数重写的两个例外 🔥

🍍 协变返回类型

🥝 析构函数的重写

🔥C++11 的 override 和 final 🔥

 🍑override

 🍉final

🔥重载、覆盖(重写)、隐藏(重定义)的对比 🔥

💢重载(Overloading) 

💢覆盖(重写)(Overriding) 

💢重定义(隐藏)(Hiding) 

四、抽象类 

五、多态的原理 

💢多态性的基本原理 

💧虚函数表指针💧

💧虚函数表💧

💧虚函数表和虚指针相互关联构成 --- 多态💧

💢 动态绑定和静态绑定

六、多态的常考面试题 

七、共勉 


一、前言

   多态 ----  是 面向对象 三大基本特征中的最后一个,多态 可以实现 “一个接口,多种方法”,比如 父类 和 子类 中的同名方法,在增加了多态后,调用同名函数时,可以根据不同的对象(父类对象或子类对象)调用属于自己的函数,实现不同的方法,因此 多态 的实现依赖于 继承

        如果大家还不太了解 继承 可以先看看这篇文章:C++继承详解

二、多态是什么?

        多态(Polymorphism)这个词来源于 希腊语,意思是“多种形态”。在编程中,多态允许你  使用相同的接口(方法或函数)来   处理不同的 数据类型 或 对象。这使得代码更加灵活和可扩展。

        通俗一点:不同对象  -----  完成同一件事情   -----  产生不同的结果


举例1:

比如 春节回家买票 (看作一件事情),当普通人买票时,是全价买票 ;学生买票时,半价买票;军人买票时是优先买票。(不同的对象,产生了不同的结果)

【C++】多态-最全解析(多态是什么?如何使用多态?多态的底层原理是什么?)


举例2: 

为了争夺在线支付市场,支付宝年底经常会做诱人的 扫红包-支付-给奖励金 的活动。

那么大家想想为什么有人扫的红包又大又新鲜 8块、10 块...而有人扫的红包都是1毛,5...。其实这背后也是一个多态行为。 

总结一下:同样是扫码动作(看作一件事情),不同的用户扫得到的不-样的红包(不同的对象,产生了不同的结果),这也是一种多态行为。 

【C++】多态-最全解析(多态是什么?如何使用多态?多态的底层原理是什么?)


代码举例:引出 本篇文章所要学习的 关于多态的 十万个 为什么? 

假设你在家里有一只宠物。宠物可以是 猫、狗 或 鸟。每种宠物都会发出叫声,但每种宠物的叫声不同。我们可以定义一个基类 Pet,然后让 Cat、Dog 和 Bird 继承自这个基类。 

class Pet {
public:
    virtual void makeSound() {
        cout 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]