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