C++第11章 多态性课件.ppt

C++第11章 多态性课件.ppt

ID:57055433

大小:67.50 KB

页数:25页

时间:2020-07-30

C++第11章 多态性课件.ppt_第1页
C++第11章 多态性课件.ppt_第2页
C++第11章 多态性课件.ppt_第3页
C++第11章 多态性课件.ppt_第4页
C++第11章 多态性课件.ppt_第5页
资源描述:

《C++第11章 多态性课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章多态性教学内容11.1多态性概述11.2运算符重载11.3不同类型数据间的转换11.4虚函数11.5纯虚函数与抽象类返回总目录111.1多态性概述返回目录多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能。多态的实现:函数重载运算符重载虚函数211.1多态性概述—多态性的类型返回目录包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。参数多态与类属相关联,类属是一个可以参数化的模板,其中包含的操作所涉及的类型必须用类型参数实例化。这

2、样,由类模板实例化的各类都具有相同的操作,而操作对象的类型却各不相同。311.1多态性概述—多态性的类型返回目录面向对象的多态性可以严格地分为4类:重载多态、强制多态、包含多态和参数多态。前两种统称为专用多态,而后两种也称为通用多态。前面介绍过的普通函数及类的成员函数的重载都属于重载多态,本章还将讲述运算符重载,上述把加法运算分别使用于浮点数、整型数之间就是重载的实例。强制多态是通过语义操作把一个变元的类型加以变化,以符合一个函数或者操作的要求。前面所讲的加法运算符在进行浮点数与整型数相加时,首先进行类型强制转换,把整型数变为浮点数再相加的情况就是强制多态的实例。411.1多态性概述—多态性的

3、实现返回目录在C++中有两种多态性编译时的多态性运行时的多态性运行时的多态性是指在程序执行前,无法根据函数名和参数来确定该调用哪一个函数,必须在程序执行过程中,根据执行的具体情况来动态地确定。它是通过类继承关系和虚函数来实现的。目的也是建立一种通用的程序。通用性是程序追求的主要目标之一。通过函数的重载和运算符的重载来实现的。511.1多态性概述—多态的实现多态从实现的角度来讲可以划分为两类——编译时多态和运行时多态。前者是在编译的过程中确定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态地确定操作所针对的具体对象。这种确定操作的具体对象的过程就是联编(binding),也有的文献称为

4、编联、束定或绑定。联编是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程,用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。按照联编进行阶段的不同,可以分为两种不同的联编方法——静态联编和动态联编。这两种联编方法分别对应着多态的两种实现方式。返回目录611.2运算符重载—什么是运算符重载运算符重载是对已有的运算符赋予多重含义,同一个运算符作用于不同类型的数据导致不同类型的行为。C++中预定义的运算符的操作对象只能是基本数据类型。实际上,对于很多用户自定义类型(比如类),也需要有类似的运算操作,这就提出了对运算符进行重新定义,赋予已有符号以新的功能

5、的要求。返回目录711.2运算符重载—什么是运算符重载运算符重载的实质就是函数重载。在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用的函数,这个过程是在编译过程中完成。所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。返回目录811.2运算符重载—运算符重载的方法运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的

6、。运算符重载实质上是函数的重载。重载运算符的函数的一般格式如下:函数类型operator运算符名称(形参表列){对运算符的重载处理}例如,想将“+”用于类Complex(复数)的加法运算,函数的原型可以是这样的:Complexoperator+(Complex&c1,Complex&c2);911.2运算符重载—运算符重载的方法规则有了运算符,编程就显得方便。例如,对于直角三角形斜边长度公式,用函数的格式表示为:c=sqrt(add(mult(a,a),mult(b,b)));用运算符的格式表示为:c=sqrt(a*a+b*b);运算符是函数,除了运算顺序和优先级不能更改外,参数和返回类型是可

7、以重新说明的,即可以重载。C++规定,运算符中参数说明都是内部类型时不能重载。C++基本数据类型之间的关系是确定的,如果允许定义其上的新操作,那么基本数据类型的内在关系将出现混乱。C++还规定了.、∷、.*、.>、?:这5个运算符不能重载,也不能创造新运算符。1011.2运算符重载—运算符作友员函数运算符可以重载为类的友元函数,这样,它就可以自由地访问该类的任何数据成员。这时,运算符所需要的操作

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

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

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