前言
我们知道C++的三大特性就是封装、继承和多态。
虚函数在继承部分出现,主要就是为了实现多态机制。
多态是可以用父类的指针指向子类的实例,可以直接调用子类的成员函数。这样父类就实现了多态。
虚函数初见
在继承中,我们可以为父类和子类定义两个同名的成员函数。
比如
class Base{
void func(){
...
}
}
class Dervied:public base{
void func(){
...
}
}
在用子类调用成员函数时可以通过成员名.函数名()来调用。
Derived A;
A.func();
如果想要调用父类的成员函数,就需要使用父类的类名
A.Base::func();
对于这种情况,人们提出一种思考。能不能使用一种统一的形式,既可以调用不同层次的函数。(如果子类有重新定义则调用新的,没有则使用继承的)
只需要使用一根指针p,比如p->func(),将p指向不同的类对象,就可以调用不同层次的函数。
虚函数就是起到这个作用的,总结一下:
虚函数用于直接通过父类指针或引用访问父类和子类中的同名函数。