第八章 多态性和虚函数ppt课件.ppt

第八章 多态性和虚函数ppt课件.ppt

ID:58680658

大小:326.00 KB

页数:86页

时间:2020-10-05

第八章 多态性和虚函数ppt课件.ppt_第1页
第八章 多态性和虚函数ppt课件.ppt_第2页
第八章 多态性和虚函数ppt课件.ppt_第3页
第八章 多态性和虚函数ppt课件.ppt_第4页
第八章 多态性和虚函数ppt课件.ppt_第5页
资源描述:

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

1、函数重载运算符重载静态联编和动态联编虚函数纯虚函数和抽象类虚析构函数程序实例主要内容8.1函数重载多态性的概念函数重载多态性的概念多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。多态的实现:函数重载运算符重载虚函数类模板在C++中,多态定义为不同函数的同一接口。从这个定义出发,函数和操作符的重载也属于多态。在C++中,允许在同一作用域内的多个函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。注意:(1)作为重载函

2、数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。(2)重载函数一般应具有相同的功能,否则会破坏程序的可读性。(3)在重载函数中使用缺省函数参数要注意二义性。如:voidprint(inta,intb);voidprint(inta,intb,intc=50);print(10,100);函数重载函数重载函数重载:同一作用域中允许多个函数使用同一函数名,但函数原型的形式参数的个数或者对应位置的类型不同一、函数重载的方法C语言不支持函数重载,所以每一个函数必须具有唯一的名字例:求绝对值intabs(int);整型l

3、onglabs(long);长整型floatfabs(float);浮点型C++的函数重载:编译程序根据实际参数的个数与相应位置的类型选择调用哪一个版本的重载函数#includeintabs(intx)//整数类型数据的绝对值函数{cout<<"Usingintegerversionofabs().";return(x>=0?x:-x);}doubleabs(doublex)//浮点类型数据的绝对值函数{cout<<"Usingfloating-pointversionofabs().";return(x>=0

4、.0?x:-x);}longabs(longx)//长整数类型数据的绝对值函数{cout<<"Usinglongintegerversionofabs().";return(x>=0?x:-x);}intmain(){cout<

5、);doublefun(int);不是重载函数用typedef声明的类型别名,并没有创建新的数据类型例:typedefdoubleMONEY;doublecalculate(doubleincome);MONEYcalculate(MONEYincome);不是重载函数不同参数传递方式无法区别重载函数例:voidfun(int);voidfun(int&);不是重载函数函数重载的二义性 原因:1.函数调用时参数的隐式类型转换函数调用时,编译程序选择重载函数的原则:如果函数调用的实际参数类型与一个重载函数的形式参数类型完全匹配,则选择调用该重载

6、函数;如果找不到与实际参数类型完全匹配的函数原型,但如果将实参类型转换为更高级类型后能找到完全匹配,编译程序将选择该调用重载函数。P296例:intfun(int);fun(‘A’);隐式类型转换是由编译程序自动完成,易引起函数重载的二义性#includefloatabs(floatx){return(x>=0?x:-x);}doubleabs(doublex){return(x>=0?x:-x);}intmain(){cout<

7、s(-5)<<"";//错误,编译程序无法确定调用abs()的哪一个版本return0;}在重载函数中使用缺省参数也可能造成二义性#includeintfunc(inti){returni;}intfunc(inti,intj=10){returni*j;}intmain(){cout<

8、tream.h>voidprint(intx){cout<<"Callingprint(int)with"<

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

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

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