一、定义
我们首先要明白多态的产生条件:1、继承关系的出现
2、父类虚函数被子类重写
3、父类指针或者引用被使用
多态产生的一个基本条件我认为是:父类的指针可以指向子类的对象。
多态的产生是架构的基础,多态的产生可以使关于同一基类的子类的对象和算法分离。
二、使用
先写一个关于多态的例子
class hero1
{
public :
virtual int power()//父类的虚函数
{
return 10;
}
protected :
private :
};
class hero2 : public hero1//继承关系的出现
{
public :
virtual int power()//子类虚函数对父类虚函数的重写
{
return 20;
}
protected :
private :
};
class enemy
{
public :
int attack ()
{
return 15;
}
protected :
private :
};
void play(hero1 *a,enemy *e)//可以当作一个框架,父类指针的使用
{
if(a->power() >e->attack() )
{
cout<<"win"<<endl;
}
else
{
cout<<"lost"<<endl;
}
}
int main()
{
hero1 A1;
hero2 A2;
enemy S1;
play(&A1,&S1);//传子类用子类函数
play(&A2,&S1);//传父类用父类函数
}
最关键的是父类虚函数的重写,子类重写的也为虚函数。
!欢迎各位来指出不足