(1)、把基类中的成员函数定义为虚函数后,在其派生类中定义的虚函数必须与基类中的虚函数同名,且参数的类型、顺序、个数必须一一对应,函数的返回值的类型也要相同。若函数名相同,但参数的个数或者参数的类型不同时,属于函数的重载,而不是虚函数。
(2)、必须使用基类的指针变量来调用虚函数时才能实现动态多态性。基类指针指向不同的派生类对象时,调用该指针所指向的虚函数时,尽管调用的形式一样,但实际调用的函数是不同的。
(3)、虚函数必须是类的成员函数,不能是友元函数,也不能是静态的成员函数。
(4)、在其派生类中没有重新定义基类中的虚函数时与一般的成员函数一样,当调用这种派生类对象的虚函数时,仍调用其基类中的虚函数。
(5)、可把析构函数定义为虚函数,但不能将构造函数定义为虚函数。把析构函数定义为虚函数时,释放基类指针所指向的动态对象时,实现撤消动态对象时的多态性。
(6)、调用虚函数比调用一般的成员的执行速度要慢一些。实现虚函数调用的机制是间接的,在程序执行期间根据基类指针所指向的实际对象,才能确定应该调用的成员函数,这种调用效率要低一些。
评论