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