11.6 小结
多态性是面向对象程序设计的又一个重要特征,在C++中多态性是通过虚函数实现的。通过虚函数,可以用同一个指针(尤其是指向基类的指针)访问不同对象的成员函数。多态配合第10章中讲解的类型适应,可以为类层次中的函数调用提供统一接口,具有十分重要的意义。
本章首先介绍了静态联编和动态联编的含义,随后引出了虚函数的定义方式,不同方式的访问,虚函数的响应形式有所不同。在某些情况下,在基类中可能无法定义虚函数,这时可以将其设置为纯虚函数,此时的类称为抽象类。纯虚函数和抽象类只能提供接口的作用,抽象类无法创建对象。
同普通函数一样,多基派生时,虚拟函数也会存在二义性问题,在类设计时要合理规划,避免出现编译器无法判断的情况。从整个类层次的角度来分析,其中的同名成员函数存在3种关系,即重载、覆盖和隐藏,理解同名函数间的关系有助于代码的阅读和编写,也能够提高程序设计的效率。