虚函数的特性

1、一旦将某个成员函数声明为虚函数后,它在类的继承体系中就永远为虚函数了。

2、如果基类定义了虚函数,当通过基类指针或引用调用派生类对象时,将访问到它们实际所指对象中的虚函数版本。

3、只有通过基类对象的指针和引用访问派生类对象的虚函数时,才能体现虚函数的特性。

4、派生类中的虚函数要保持其虚特征,必须与基类虚函数的函数原型完全相同,否则就是普通的重载函数,与基类的虚函数无关。

5、派生类通过从基类继承的成员函数调用虚函数时,将访问到派生类中的版本。

6、只有类的非静态成员函数才能被定义为虚函数,类的构造函数和静态成员函数不能定义为虚函数。原因是虚函数在继承层次结构中才能够发生作用,而构造函数、静态成员是不能够被继承的。

7、内联函数也不能是虚函数。因为内联函数采用的是静态联编的方式,而虚函数是在程序运行时才与具体函数动态绑定的,采用的是动态联编的方式,即使虚函数在类体内被定义,C++编译器也将它视为非内联函数。

原文地址:https://www.cnblogs.com/XiHua/p/3615962.html