c++语言简明教程 教学课件 作者 吴延海_第5章.ppt

c++语言简明教程 教学课件 作者 吴延海_第5章.ppt

ID:50350261

大小:257.50 KB

页数:56页

时间:2020-03-08

c++语言简明教程 教学课件 作者 吴延海_第5章.ppt_第1页
c++语言简明教程 教学课件 作者 吴延海_第5章.ppt_第2页
c++语言简明教程 教学课件 作者 吴延海_第5章.ppt_第3页
c++语言简明教程 教学课件 作者 吴延海_第5章.ppt_第4页
c++语言简明教程 教学课件 作者 吴延海_第5章.ppt_第5页
资源描述:

《c++语言简明教程 教学课件 作者 吴延海_第5章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章类的多态性5.1类的多态5.2运行时的多态性本章小结多态性是面向对象程序设计的一个重要特征,多态性有很多种,反映出客观世界的多样性,能够提供程序设计的极大灵活性。多态性的种类很多,运行时的多态性是多态性中重要的一种,C++语言用虚函数方法实现运行时的多态性。5.1类的多态5.1.1多态性的概念多态性是面向对象程序设计的一个重要特征。“一个函数名,不同的功能”,这是多态性最简单的表述。类的多态性体现在面向对象程序设计的许多方面,函数重载、函数的覆盖继承、虚函数以及类模板均是多态性的体现。函数重载要求重载的函数在同一名字空间中使用相同的函数名,但必须保证

2、函数的参数个数或者参数类型不同,编译环境利用名字分裂机制在内部区分了各个重载的函数,认为是不同的函数。这样同一个对象调用相同的成员函数时,会由于参数个数不同或参数类型不同而产生不同的调用结果。前面讲过,在类继承中派生类可以覆盖基类定义过的成员函数,要求派生类中要覆盖的成员函数在其函数名、参数个数和参数类型与基类成员函数完全一样。否则,系统将按成员函数重载考虑。当派生类覆盖了基类的某个成员函数时,如果派生类对象调用了覆盖的成员函数时,则系统匹配的方法是自当前派生类层向上逐层匹配,直到匹配到一个成员函数为止。但是,在程序设计时,仅仅通过派生类是否覆盖基类定义过

3、的成员函数提供的多态性有时不够灵活。比如考虑到赋值兼容准则,一个基类的对象指针可能指向派生类,那么该对象指针调用了覆盖函数的话,系统只是调用基类中的该函数,而并未调用派生类中的函数。如果对于一个类层次来说,同样一个成员函数的调用,程序中动态确定的对象不同,则调用的成员函数不同。这样多态性能提供程序设计更大的灵活性,此多态性称做运行时的多态性。本章主要讨论这种多态性。另外,面向对象技术还支持函数参数的多态性,这需要使用模板方法来实现。5.1.2多态性的种类如上节所述,面向对象技术支持的多态性主要包括四种:强制多态、重载多态、包含多态和参数类型多态。(1)强制

4、多态是指将一种类型的值转换为另一种类型的值进行的语义操作,从而防止类型错误。类型转换可以是隐式的,在编译时完成;也可以是显式的,可在动态运行时完成。C++语言定义了基本数据类型之间的隐式转换规则,即char->short->int->unsigned->long->unsignedlong->float->double->longdouble但在赋值运算中,这一规则并不适用。赋值运算时,是将赋值运算符右边变量的数据类型转换为运算符左边变量的数据类型。前面讲过,C++语言可使用两种语法进行强制类型转换:(类型说明符)变量名或类型说明符(变量名)另一种重要的显

5、式类型转换就是构造函数,构造函数进行的类型转换只能将参数类型向类类型转换。如果要把类类型的数据转换成所指定的某种数据类型,就需要使用类型转换函数。类型转换函数又称为类型强制转换成员函数,它是类中的一个非静态成员函数。它的定义格式如下:class<类型说明符1>{public:operator<类型说明符2>();};这个转换函数定义了由<类型说明符1>到<类型说明符2>之间的映射关系。【例5.1】类型转换函数范例:将分数类转换为双精度型。//-------------------------//c0501.cpp//--------------------

6、-----#includeclassRational{private:intden;//分数的分子intnum;//分数的分母public:operatordouble();//类型强制转换成员函数的声明Rational(intd,intn)//构造函数{den=d;num=n;}};Rational::operatordouble()//类型强制转换成员函数的定义{returndouble(den)/double(num);//返回double型的分数值}voidmain(){Rationalr(5,8);doubled=4.7;

7、d+=r;//隐式调用类型强制转换成员函数cout<

8、(2)重载多态是多态性中最简单的形式,它分为函数重载和运算符重载。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。