c++语言简明教程 教学课件 ppt 作者 吴延海_ 第5章
56页1、,第5章 类的多态性,5.1 类的多态 5.2 运行时的多态性 本章小结,多态性是面向对象程序设计的一个重要特征,多态性有很多种,反映出客观世界的多样性,能够提供程序设计的极大灵活性。,多态性的种类很多,运行时的多态性是多态性中重要的一种,C+ 语言用虚函数方法实现运行时的多态性。,5.1 类 的 多 态,5.1.1 多态性的概念 多态性是面向对象程序设计的一个重要特征。“一个函数名,不同的功能”,这是多态性最简单的表述。类的多态性体现在面向对象程序设计的许多方面,函数重载、函数的覆盖继承、虚函数以及类模板均是多态性的体现。,函数重载要求重载的函数在同一名字空间中使用相同的函数名,但必须保证函数的参数个数或者参数类型不同,编译环境利用名字分裂机制在内部区分了各个重载的函数,认为是不同的函数。这样同一个对象调用相同的成员函数时,会由于参数个数不同或参数类型不同而产生不同的调用结果。 前面讲过,在类继承中派生类可以覆盖基类定义过的成员函数,要求派生类中要覆盖的成员函数在其函数名、参数个数和参数类型与基类成员函数完全一样。,否则,系统将按成员函数重载考虑。当派生类覆盖了基类的某个成员函数时,
2、如果派生类对象调用了覆盖的成员函数时,则系统匹配的方法是自当前派生类层向上逐层匹配,直到匹配到一个成员函数为止。 但是,在程序设计时,仅仅通过派生类是否覆盖基类定义过的成员函数提供的多态性有时不够灵活。比如考虑到赋值兼容准则,一个基类的对象指针可能指向派生类,那么该对象指针调用了覆盖函数的话,系统只是调用基类中的该函数,而并未调用派生类中的函数。,如果对于一个类层次来说,同样一个成员函数的调用,程序中动态确定的对象不同,则调用的成员函数不同。这样多态性能提供程序设计更大的灵活性,此多态性称做运行时的多态性。本章主要讨论这种多态性。 另外,面向对象技术还支持函数参数的多态性,这需要使用模板方法来实现。,5.1.2 多态性的种类 如上节所述,面向对象技术支持的多态性主要包括四种:强制多态、重载多态、包含多态和参数类型多态。 (1) 强制多态是指将一种类型的值转换为另一种类型的值进行的语义操作,从而防止类型错误。类型转换可以是隐式的,在编译时完成;也可以是显式的,可在动态运行时完成。C+ 语言定义了基本数据类型之间的隐式转换规则,即,char-short-int-unsigned-long-
3、unsigned long-float-double-long double 但在赋值运算中,这一规则并不适用。赋值运算时,是将赋值运算符右边变量的数据类型转换为运算符左边变量的数据类型。前面讲过,C+ 语言可使用两种语法进行强制类型转换: (类型说明符)变量名 或 类型说明符(变量名) 另一种重要的显式类型转换就是构造函数,构造函数进行的类型转换只能将参数类型向类类型转换。如果要把类类型的数据转换成所指定的某种数据类型,就需要使用类型转换函数。,类型转换函数又称为类型强制转换成员函数,它是类中的一个非静态成员函数。它的定义格式如下: class public: operator ( ); ; 这个转换函数定义了由到之间的映射关系。,【例5.1】 类型转换函数范例:将分数类转换为双精度型。 /- /c0501.cpp /- #include class Rational private: int den; /分数的分子,int num; /分数的分母 public: operator double(); /类型强制转换成员函数的声明 Rational(int d, int n) /构造
4、函数 den=d; num=n; ;,Rational:operator double( ) /类型强制转换成员函数的定义 return double(den)/double(num); /返回double型的分数值 void main() Rational r(5,8); double d=4.7; d+=r; /隐式调用类型强制转换成员函数,coutdendl; 执行该程序输出结果:5.325。 说明: 程序中d是一个double型数据,r是Rational类对象。这两个不同类型的数据的加法之所以能够进行,是得益于类型转换函数operator double( )。当然也可以在程序中使用显式类型强制转换函数,将加法语句改为d+=double(r)。 定义类型转换函数时需要注意的是:类型转换函数不可以有返回值,类型转换函数的名称就是类型转换的目标类型。,类型转换函数也不带任何参数,它用于将本类型的数值或变量转换成其他类型;也不可以将类型转换函数定义为友元函数。 (2) 重载多态是多态性中最简单的形式,它分为函数重载和运算符重载。函数重载允许功能相近的函数使用相同的函数名,编译系统依据这
《c++语言简明教程 教学课件 ppt 作者 吴延海_ 第5章》由会员E****分享,可在线阅读,更多相关《c++语言简明教程 教学课件 ppt 作者 吴延海_ 第5章》请在金锄头文库上搜索。
逍遥游复习 知识点整理
近现代法德关系史 高三展示课3稿
当代大学生人生信仰及追求的调查研究
长相思 纳兰性德-ppt课件
课件:危机意识 一
英语ppt演讲关于阿甘正传
发达国家基础教育改革的动向与趋势 修改版
中国民间美术 课件.ppt
生物质发电技术与系统 课程ppt 第1章 生物质发电技术现状及发展趋势 2学时 -----2016
现代信号处理思考题 含答案
执业药师继续教育 抑郁症的药物治疗 100分
小学生的成长档案模板不用修改 万能型
增订六版 现代汉语 上册 第二章文字 思考与练习答案
国家财政ppt课件
加拿大英语介绍
六年级统计图的选择课件
中学生成长档案ppt
中国现代文学史期末复习整理
lohi和hihilo训练对女子赛艇运动员运动能力影响的比较研究
风雨贾平凹阅读答案
2024-04-11 25页
2024-04-11 37页
2024-04-11 28页
2024-04-11 31页
2024-04-11 36页
2024-04-11 29页
2024-04-11 22页
2024-04-11 27页
2024-04-11 34页
2024-04-11 32页