课本上、考试里总会碰到虚函数的概念,可是一直对它的理解不是太深。现在抽时间整理一下虚函数的相关知识。
虚函数是重载的另一种表现形式。这是一种动态的重载方式,它提供了一种更为灵活的多态性机制。虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,即所谓的动态联编。
定义:
虚函数的定义是在基类中进行的,它在基类中需要定义为虚函数的成员函数的声明中冠以关键字virtual,从而提供了一种接口界面。定义虚函数的方法如下:
virtual 函数类型 函数名(形参)
{
函数体
}
在基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义。在派生类中重新定义时,其函数原型、函数名、参数个数、参数类型的顺序,都必须与基类中的原型完全相同。几个说明:
(1)在基类中,用关键字virtual可以将其public或protected部分的成员函数声明为虚函数;
(2)在派生类中对基类中声明的虚函数进行重新定义时,关键字virtual可以重写也可以不写。但在容易引起混乱的情况下,最好在派生类的虚函数进行重新定义时也加上关键字virtual。
(3)虚函数在被重新定义时,其函数原型与基类中的函数原型必须完全相同。