大家好,我是阿林。今天我分享内容是多态的使用。多态在c++中有着举重若轻的地位。它可以根据对象的不同去调用函数。可能会有小伙伴会问这样的实现不用c++中多态也可以实现。确实可以实现,但是多态可以将调用的函数集合为一个调用的函数。
实现多态的三个条件
//1 要有继承
//2 要有虚函数重写
//3 用父类指针(父类引用)指向子类对象....
可能阿林我语言表达得不太清楚,我们还是直接上代码看看是怎么回事把。
#include <iostream>
using namespace std;
class HeroFighter
{
public:
virtual int power()
{
return 10;
}
};
class EnemyFighter
{
public:
int attack()
{
return 15;
}
protected:
private:
};
class AdvHeroFight :public HeroFighter
{
public:
virtual int power()
{
return 20;
}
};
//多态的威力
// 1 PlayObj 给对象搭建舞台 看成一个框架
void PlayObj(HeroFighter* hf, EnemyFighter* ef)
{
if (hf->power() > ef->attack()) //hf->power()函数调用会有多态发生
{
printf("主角赢了\n");
}
else
{
printf("主角挂了\n");
}
}
//多态很重要
//实现多态的三个条件
//c语言 间接赋值 是指针存在的最大的意义
//是c语言的特有的现象 (1定义两个变量 2建立关联 3*p在被调用函数中去间接的修改实参的值)
//实现多态的三个条件
//1 要有继承
//2 要有虚函数重写
//3 用父类指针(父类引用)指向子类对象....
int main()
{
HeroFighter hf;
AdvHeroFight advhf;
EnemyFighter ef;
PlayObj(&hf, &ef);
PlayObj(&advhf, &ef);
system("pause");
return 0;
}
根据不同的对象调用不同的函数,统一类型都是它的基类。