文档介绍:C++大学基础教程
第11章多态性
北京邮电大学电信工程学院
计算机技术中心
2005-4-28 1
多态性(Polymorphism)是面向
对象程序设计的主要特征之一。
多态性对于软件功能的扩展和软
件重用都有重要的作用。是学习
面向对象程序设计必须要掌握的
主要内容之一。
第十一章多态性
多态性的概念
继承中的静态联编
虚函数和运行时的多态
纯虚函数和抽象类
继承和派生的应用
模板
多态性的概念
总的来说,不同对象对于相同的消息有不同的
响应,就是面向对象程序设计中的多态性。
具体在程序中,多态性有两种表现的方式:
同一个对象调用名字相同、但是参数不同的函数,
表现出不同的行为。在同一个类中定义的重载函数
的调用,属于这种情况。
不同的对象调用名字和参数都相同的函数,表现出
不同的行为。在派生类的应用中,经常会看到这样
的调用。
2005-4-28 北京邮电大学电信工程学院计算机技术中心-5-
面向对象程序设计中多态性表现为以下几种形
式:
重载多态:通过调用相同名字的函数,表现出不同
的行为。运算符重载也是一种重载多态。
运行多态:通过基类的指针,调用不同派生类的同
名函数,表现出不同的行为。许多面向对象程序设
计的书籍中所说的多态性,就是这种多态。
模板多态,也称为参数多态:通过一个模板,得到
不同的函数或不同的类。这些函数或者类具有不同
的特性和不同的行为。
2005-4-28 北京邮电大学电信工程学院计算机技术中心-6-
多态的实现:联编
一个具有多态性的程序语句,在执行的
时候,必须确定究竟是调用哪一个函
数。也就是说,在执行的时候调用哪个
函数是唯一地确定的。确定具有多态性
的语句究竟调用哪个函数的过程称为联
编(Binding),有的资料也翻译成“绑
定”。
2005-4-28 北京邮电大学电信工程学院计算机技术中心-7-
多态的实现:联编
联编有两种方式:静态联编和动态联
编。
在源程序编译的时候就能确定具有多态
性的语句调用哪个函数,称为静态联
编。
对于重载函数的调用就是在编译的时候
确定具体调用哪个函数,所以是属于静
态联编。
2005-4-28 北京邮电大学电信工程学院计算机技术中心-8-
多态的实现:联编
动态联编则是必须在程序运行时,才能够确定
具有多态性的语句究竟调用哪个函数。用动态
联编实现的多态,也称为运行时的多态。以上
所述的几种多态形式中,只有运行多态是属于
动态联编。以后我们会看到,在一个循环中的
同一个语句,第一次循环时调用的是一个函
数,第二次循环时调用的是另一个函数。这种
结果,程序不运行是看不到的。所以称为动态
联编。
2005-4-28 北京邮电大学电信工程学院计算机技术中心-9-
继承中的静态联编