多态的发生有三个条件:
- 出现了继承关系;
- 在父类中定义了虚函数,并在子类中对虚函数进行重写
- 父类指针或引用指向了子类对象,就是一个方法定义传入的是父类指针,但传入的参数是子类对象。
class Parent{
int a;
virtual int fun(){
}
}
class Child{
int fun(){
在这里重写了fun方法
}
}
全局方法
int function(Parent *p){
p->fun();
}
int main(){
Child c;
function(c); //这里可以顺利执行,并且会执行child里面的fun方法
}