14.C++多态

目录

多态概念

多态的构成

抽象类

多态的原理


多态概念

什么是多态呢?

就是针对不同对象时对同一个方法接口产生不同的结果。就好像抢手气红包,不同人(对象)抢红包(方法接口)抢到的钱不同(不同的结果)。

多态的构成

多态的构成需要满足两个条件:
1. 必须通过基类的指针或者引用调用虚函数
2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写

class PersonA
{
public:
    virtual void LuckmMoney()
    {
      cout<<"抢到1/3"<<endl;
    }
};

class PersonB:public PersonA
{
public:
    virtual void LuckmMoney()
    {
      cout<<"抢到2/3"<<endl;
    }
};

void Func(PersonA& people)
{
    People.LuckmMoney();
}

void Test()
{
    personA zhangyi;
    Func(zhangyi);
    personB goucui;
    Func(goucui);
}

而virtual修饰的类成员函数称为虚函数。

而多态的实现利用了虚函数的重写(覆盖),派生类中有一个跟基类完全相同的虚函数即构成重写。

我们还要记住两个关键字

1. final:修饰虚函数,表示该虚函数不能再被继承

2. override: 检查派生类虚函数是否重写了基类某个虚函数,如果没有重写编译报错。

抽象类

在虚函数后面加上=0,则这个函数是纯虚函数,包含纯虚函数的类是抽象类。

派生类继承后必须重写才能实例化对象,体现了接口继承。

多态的原理

类中有虚函数会有虚函数表存放虚函数的指针,类中会存放虚函数表指针。

多态的原理本质是虚函数的重写。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学c的长弓狗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值