文档介绍:第5章多态性
1
《面向对象技术与Visual C++》--第5章
本章主要内容
多态性的概念和多态类型
联编
虚函数
抽象类
运算符重载
2
《面向对象技术与Visual C++》--第5章
多态性的概念
多态性是指具有相似功能的不同函数使用同一个名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性。
C++的多态性是指对同一条消息,被不同类型的对象接收将产生不同的行为。
多态性是实现“一种接口,多种方法”的技术。这里的“一种接口”是指相同函数名,而“多种方法”是指多种函数实现。
3
《面向对象技术与Visual C++》--第5章
多态的类型
C++支持的多态可以分为四种类型:
重载多态
强制多态
包含多态
参数多态
4
《面向对象技术与Visual C++》--第5章
联编
多态性的实现过程中,确定调用哪个同名函数的过程就是联编(binding),又称绑定。
联编是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程。
用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。
按照联编进行的阶段的不同,可以分为静态联编和动态联编,这两种联编过程分别对应着多态性的两种实现方式。
5
《面向对象技术与Visual C++》--第5章
静态联编
在编译阶段完成的联编称为静态联编。
在编译过程中,编译系统可以根据类型匹配等特征来确定程序中调用操作与执行某个同名函数实现之间的关系,即确定某一个同名函数到底是要调用哪一段函数实现代码。
函数重载和运算符重载就是通过静态联编方式实现的编译时的多态的体现。
静态联编的优点是函数调用速度快、效率较高,缺点是编程不够灵活
6
《面向对象技术与Visual C++》--第5章
动态联编
只有在运行程序时才能确定将要调用的函数。这种在运行阶段进行的联编称为动态联编。
动态联编的优点是提供了更好的编程灵活性、问题抽象性和程序易维护性,缺点是与静态联编相比,函数调用速度慢。
7
《面向对象技术与Visual C++》--第5章
虚函数
虚函数是动态联编的基础。
虚函数是非静态的成员函数,经过派生之后,虚函数在类族中可以实现运行时的多态性。
8
《面向对象技术与Visual C++》--第5章
虚函数的声明
虚函数是一个在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。声明虚函数的格式如下:
virtual <返回值类型> <函数名>(<参数表>);
9
《面向对象技术与Visual C++》--第5章
虚函数的使用
如果某类中的一个成员函数被说明为虚函数,这就意味着该成员函数在派生类中可能有不同的函数实现。
当使用对象指针或对象引用调用虚函数时,采用动态联编方式,即在运行时进行关联或绑定。
10
《面向对象技术与Visual C++》--第5章