15.14 小结

多态性在C++中用虚函数实现,它意味着“具有不同的形式”。在面向对象的程序设计中,有相同的功能(即基类中的公共接口)和使用这个功能的不同的形式:虚函数的不同版本。

在本章中,我们已经看到,不用数据抽象和继承,理解甚至创建一个多态的例子,是不可能的。多态是不能独立看待的特征(例如像const或switch这样的语句),必须协同工作,它是类关系大家庭中的一部分。人们常常被C++的其他非面向对象的特征(例如重载和默认参数)所混淆,它们有时被作为面向对象的特征描述。不要被迷惑,如果它们没有进行晚捆绑,就没有多态性。

为了在程序中有效地使用多态等面向对象的技术,不能只知道让程序包含单个类的成员和消息,而且还应知道类的共性和它们之间的关系。虽然这需要很大的努力,但这是值得的,因为将得到更快的程序开发和更好的代码组织、可扩充的程序和更容易维护的代码。

多态性完善了语言的面向对象特征,但在C++中,还有两个更重要的特征:模板(第16章的内容,并且在第2卷中有更为详细介绍)和异常处理(在第2卷中介绍)。就像面向对象的其他特征(抽象数据类型、继承和多态)一样,这些特征使我们的编程能力有很大的提高。