一、定义
我们首先要明白多态的产生条件: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);//传父类用父类函数 }
最关键的是父类虚函数的重写,子类重写的也为虚函数。
!欢迎各位来指出不足