第16讲多态性与虚函数 教学目的与要求: 了解虚函数的作用和功能 掌握虚函数实现多态性。 教学内容提要: 多态性的概念 2、函数重载; 3、虚函数; 教学重点:虚函数的声明和使用。 教学难点:虚函数的声明和使用。 教学进度:P162,P200~P212 教学过程:
第16讲 多态性与虚函数 •教学目的与要求: 了解虚函数的作用和功能。 掌握虚函数实现多态性。 •教学内容提要: 1、 多态性的概念; 2、函数重载; 3、虚函数; •教学重点:虚函数的声明和使用。 •教学难点:虚函数的声明和使用。 •教学进度:P162,P200~P212 •教学过程:
16.1多态性概述 多态就是指不同的对象接受到相同的消息时产生不同的响应动 作,即对应相同的函数名,却执行了不同的函数体(当然,这 些函数在 要事先定义好,以便调用) 种把程序标示符与和一个存储地址相联系的过程,称为联编 binding,又译为绑定)
16.1 多态性概述 多态就是指不同的对象接受到相同的消息时产生不同的响应动 作,即对应相同的函数名,却执行了不同的函数体(当然,这 些函数体还是要事先定义好,以便调用)。 种把程序标示符与和一个存储地址相联系的过程,称为联编 (binding,又译为绑定)
161.1多态的分类 C++中的多态性可以分为四类: 参数多态: 包含多态:指在基类及其派生类族中同名函数的不 同函数实现,及其在运行时的不同响应。 重载多态:函数重载 强制多态:不同类型的数据类型进行混合运算时要 进行的强制类型转换。 前面两种统称为通用多态,而后面两种统称为专用 多态
16.1.1 多态的分类 C++中的多态性可以分为四类: 参数多态: 包含多态:指在基类及其派生类族中同名函数的不 同函数实现,及其在运行时的不同响应。 重载多态:函数重载 强制多态:不同类型的数据类型进行混合运算时要 进行的强制类型转换。 前面两种统称为通用多态,而后面两种统称为专用 多态
16.12多态的实现 多态从实现的角度来讲可以划分为两类: 编译时的多态和运行时的多态。 编译时的多态是通过静态联编来实现的。静 态联编就是在编译阶段完成的联编。编译时多态 性主要是通过函数重载和运算符重载实现的。 运行时的多态是用动态联编实现的。动态联编 是运行阶段完成的联编。运行时多态性主要是通 过虚函数来实现的
16.1.2多态的实现 多态从实现的角度来讲可以划分为两类: 编译时的多态和运行时的多态。 编译时的多态是通过静态联编来实现的。静 态联编就是在编译阶段完成的联编。编译时多态 性主要是通过函数重载和运算符重载实现的。 运行时的多态是用动态联编实现的。动态联编 是运行阶段完成的联编。运行时多态性主要是通 过虚函数来实现的
162普通成员函数重载 在C++语言中,只有在声明函数原型时形式参数的个数 或者对应位置的类型不同,两个或更多的函数就可以共用 个名字。这种在同一作用域中允许多个函数使用同一函数名 的措施被称为重载( overloading)。函数重载是C++程序获 得多态性的途径之一。 1621函数重载的方法 函数重载要求编译器能够唯一地确定调用一个函数时应 执行哪个函数代码,既采用哪个函数实现。确定函数实现时, 要求从函数参数的个数和类型上来区分。这就是说,进行函 数重载时,要求同名函数在参数个数上不同,或者参数类型 不同。否则,将无法实现函数重载
16.2 普通成员函数重载 在C++语言中,只有在声明函数原型时形式参数的个数 或者对应位置的类型不同,两个或更多的函数就可以共用一 个名字。这种在同一作用域中允许多个函数使用同一函数名 的措施被称为重载(overloading)。函数重载是C++程序获 得多态性的途径之一。 16.2.1 函数重载的方法 函数重载要求编译器能够唯一地确定调用一个函数时应 执行哪个函数代码,既采用哪个函数实现。确定函数实现时, 要求从函数参数的个数和类型上来区分。这就是说,进行函 数重载时,要求同名函数在参数个数上不同,或者参数类型 不同。否则,将无法实现函数重载