多态、重载、覆盖、隐藏、虚析构函数

4.1 通⽤接⼝

1. 通⽤接⼝
需求: 在王者荣耀游戏中设计⼀个选择英雄玩游戏的函数接⼝?
void playGameByAngela(Angela &angela);
void playGameByXiangYu(XiangYu &xiangyu);
void playGameByLuban(Luban &lanban);
void playGame(AngelaHero &angela);
void playGame(XiangYu &xiangyu);
void playGame(Luban &lanban);
void playGame(AngelaHero &angela);
void playGame(XiangYu &xiangyu);
void playGame(Luban &lanban);
void playGame(MonkSha &monkSha);

        在 C++ 中可以使⽤⽗类的引⽤来引⽤⼦类的对象,也可以使⽤⽗类的指针来指向⼦类的对象 ,反过来则不⾏。“ 只能爹管⼉⼦,不能⼉⼦管爹”
  • void playGame(Hero &hero);
⽗类的函数接⼝是⽤ virtual 关键字修饰变成虚函数
class Hero{
public:
    virtual void skill(void);
};
⼦类继承⽗类,对⽗类的函数接⼝进⾏重写
class Angela:public Hero
{
public:
    virtual void skill(void);
};
class XiangYu:public Hero{
public:
    virtual void skill(void);
};
class Luban:public Hero{
public:
    virtual void skill(void);
};
⽗类的引⽤来引⽤⼦类的对象或⽗类的指针来指向⼦类的对象
void playGame(Hero &hero)
{
    hero.skill();
}

4.2 多态 (polymorphic) 介绍

一、概念
        不同的对象接收到同⼀消息的时候,产⽣不同的效果
二、理解
        在⾯向对象中, 多态是 **** 指通过基类 (⽗类) 的指针或者引⽤指向⼦类的对象 在运⾏时动态调⽤实际绑定对象函数的⾏为。即 ⼀个接⼝,多种实现
三、分类
  • 静态多态编译器在编译期间完成的,编译器会根据实参类型来选择调⽤合适的函数,如果有合适的函数就调⽤,没有的话就会发出警告或者报错;
  • 动态多态是 ** 在程序运⾏时 **** 根据基类的引⽤(指针)** 指向的对象来确定⾃⼰具体该调⽤哪⼀个类的虚函数。
四、作用
        把不同的⼦类对象都当作⽗类来看,可以屏蔽不同⼦类对象之间的差异,写出通⽤的代码 ,做出通⽤的编程,以适应需求的不断变化。 多态是设计模式的基础,多态是框架的基础。
五、前提条件
  • 要有继承
  • 要有虚函数重写(被 virtual 声明的函数叫虚函数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值