ImageVerifierCode 换一换
格式:PPT , 页数:23 ,大小:400.54KB ,
资源ID:12611323      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12611323.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(多态性用同样的接口访问功能不同的函数优质文档.ppt)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

多态性用同样的接口访问功能不同的函数优质文档.ppt

1、个人演示ppt设计模板,第一级标题,第二级标题,第三级内容,第四级内容,第五级内容,*,*,*,*,个人演示ppt设计模板,第一级标题,第二级标题,第三级内容,第四级内容,第五级内容,*,*,个人演示ppt设计模板,第一级标题,第二级标题,第三级内容,第四级内容,第五级内容,个人演示ppt设计模板,第一级标题,第二级标题,第三级内容,第四级内容,第五级内容,*,*,第一级标题,第二级标题,第三级内容,第四级内容,第五级内容,个人演示ppt设计模板,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,多态性用同样的接口访问功能不同的函数,函数联编,静态联编:指

2、系统在编译时就决定如何实现某个动作。,特点:,要求在程序编译时就知道调用函数的全部信息。,函数调用速度很快,效率高,通过函数重载而后运算符重载实现,动态联编:指系统在运行时动态实现某个动作,特点:,要到程序运行时才能确定调用哪个函数,提供更好的灵活性、问题抽象性和程序易维护性,通过继承和虚函数实现,静态联编(,通过对象的类型区别,),重新在派生类中定义基类的函数,class point,float area()return 0.0;,;,class circle:public point,float area()return 3.14159*r*r;,;,void main(),point p

3、p.area();,调用,point,类的函数,circle c;,c.area();,调用,circle,类的函数,通过,对象的类型,区别,运行时的多态性,指定关键字,virtual,,在运行时对函数动态联编,根据实际对象,调用该对象的成员函数,void main(),point*p;,circle c;,p=,p-area();,结果调用,point,类的,area,将关键字,virtual,放在类中,area,函数的函数说明之前,:,virtual float area()return 0.0;,则结果调用,circle,类的,area,通过指针所引起的对普通成员函数的调用,仅仅由声

4、明指针的类型决定,而与当时指针实际指向什么对象无关。,虚函数,虚函数:为实现某种功能而假设的函数,虚函数只能是类中的一个成员函数,不能是静态成员,格式:,virtual,数据类型 函数名(参数),说明:,首先在基类中声明虚函数(需要具有动态多态性的基类),在派生类中某个成员函数的,参数个数,、,相应类型,和,返回类型,与基类,同名,的虚函数一样(即使没有,virtual),,则该成员函数为虚函数,不允许在派生类中定义与基类仅仅返回类型不同的函数,派生类中定义与基类虚函数同名但参数不同的函数,则该函数不为虚函数。,对虚函数保证在,通过一个基类类型的指针调用,一个虚函数时,系统对该调用进行动态联编

5、对虚函数在,通过一对象调用,一个虚函数时,系统对该调用进行静态联编。,在调用中对虚函数使用成员名限定可强制对该函数的调用使用静态联编。,void main(),circle c;,circle,c1.area();,结果调用,circle,类的,area,point,p.area();,结果调用,circle,类的,area,p.point:area(),结果调用,point,类的,area,使用普通对象调用虚函数,系统以静态联编方式完成对虚函数的调用。即用哪个类说明的对象,就调用在那个类中定义的虚函数。,为达到动态联编获得运行时多态性的效果,用指向第一次定义虚函数的基类对象的指针(引用)

6、来调用虚函数,虚函数,构造函数和析构函数调用虚函数,virtual 类名(),抽象类:至少包含有一个纯虚函数的类,只能作为基类来派生新类,不能说明抽象类的对象。,point*p;,构造函数和析构函数调用虚函数,point p;,D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型,在派生类中某个成员函数的参数个数、相应类型和返回类型与基类同名的虚函数一样(即使没有virtual),则该成员函数为虚函数,不允许在派生类中定义与基类仅仅返回类型不同的函数,void vf3();虚函数,virtual float area()return 0.,virtual void vf1();虚函数

7、Base()cout“Bases cons.,void fun()cout“base2”endl;,virtual void func()=0;/D,静态联编(通过对象的类型区别),”vf1();,调用,D:vf1,bp-vf2();,调用,B:vf2,bp-vf2(5);,语法错,bp-f();,调用,B:f,d.vf2();,语法错,b=d;,赋值兼容,b.vf1();,调用,B:vf1,DD dd;,D*dp=,dp-vf4();,调用,DD:vf4,dp-vf2();,语法错,dp-vf3();,调用,DD:vf3,bp=,bp-vf2();,调用,DD:vf2,虚函数的访问权限,派

8、生类中定义的虚函数的访问权限不影响对它进行动态联编。,一个类中的虚函数说明只对派生类中重定义的函数有影响,对它的基类中的函数无影响,class A,public:,void func(),;,class B:public A,public:,virtual void func(),;,class C:public B,public:,void func(),;,C c,c.func();,c.B:func();,A,a.func();,B,b.func();,b.B:func();,在成员函数中调用虚函数,在一个基类或派生类的成员函数中可直接调用该类等级中的虚函数,class B:public

9、 A,public:,void fun3(),.,fun4(),;,void fun4(),fun5(),;,调用自身类中虚函数,调用自身类中函数,thing-fun1();,由于,fun1,是虚函数,所以,thing,可指向,A,类对象,也可指向,B,类对象,thing-fun5();,由于,fun5,不是虚函数,而是普通函数,总是先调用本类的成员函数(支配规则)。采用静态联编,调用,A,类的,fun5();,构造函数和析构函数调用虚函数,在构造函数和析构函数中调用虚函数时,采用静态联编,即调用的虚函数是自己的类或基类中定义的函数,不是任何在派生类中重定义的虚函数,执行,C c,时,先执行,

10、B,的基类,A,的构造函数,再执行,C,的基类,B,的构造函数,最后调用,C,的构造函数。,B,的构造函数执行,func(),,由于,A,类和,C,类中均有,应执行哪个?应调用基类的虚函数,执行,c.fun(),时,调用,func(),,因为是,C,对象产生的,故调用,C,的函数。,空的虚函数,空虚函数为实现虚函数支配关系的不间断。,virtual void printOn(),纯虚函数与抽象类,基类中不能为虚函数给出一个有意义的定义,这时可将它说明为纯虚函数。,形式:,class,类名,virtual,类型 函数名(参数列表),=0,;,;,说明:,抽象类:至少包含有一个纯虚函数的类,只能作

11、为基类来派生新类,,不能说明抽象类的对象,。可以说明指向抽象类的指针(引用),从一个抽象类,派生的类必须提供纯虚函数的实现代码,,或在派生类中仍将它说明成纯虚函数。,在抽象类中也可定义普通成员函数或虚函数,虽然不能为抽象类声明对象,但可通过派生类对象来调用不是纯虚函数的函数。,在成员函数内可以调用纯虚函数,但在构造函数和析构函数内不能调用,纯虚函数与抽象类,虚析构函数,只要基类的析构函数被说明为虚函数,则派生类的析构函数自动成为虚函数。而构造函数的调用意味着建立一个对象,这时必须确切的知道这个对象的类型,因此无意义,虚析构函数的说明:,virtual,类名(),例:,class A,publi

12、c:,A(),virtual A()cout,“,Destructor A,”,endl;,;,class B:public A,public:,B(),B()cout,“,Destructor B,”,endl;,;,void main(),A*pa=new B;,delete pa;,class point,float x,y;,public:,void setPoint(float i,float j)x=i;y=j;,virtual float area()return 0.0;,class circle:public point,float radius;,float area()r

13、eturn pi*radius*radius;,public:,void setRadius(float r)radius=r;,void main(),circle c;,c.setRadius(2.5);,point,float a=p.area();(float a=c.area();),coutThe area of the circle is aendl;,下列关于动态联编的描述中,错误的是(),A),动态联编是以虚函数为基础的,B),动态联编是在运行时确定所调用的函数代码的,C),动态联编调用函数操作是指向对象的指针或对象引用,D),动态联编是在编译时确定操作函数的,关于虚函数的描

14、述中,正确的是(),A),虚函数是一个静态成员函数,B),虚函数是一个非成员函数,C),虚函数既可以在函数说明时定义,也可以在函数实现时定义,D),派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型,下面关于构造函数和析构函数的描述,错误的是(),A),析构函数中调用虚函数采用静态联编,B),对虚析构函数的调用可以采用动态联编,C),当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数,D),构造函数可以声明为虚函数,关于纯虚函数和抽象类的描述中,错误的是(),A),纯虚函数是一种特殊的虚函数,它没有具体的实现,B),抽象类是指具有纯虚函数的类,C),一个基类中说明有纯虚函数,

15、该基类的派生类一定不再是抽象类,D),抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出,以下()成员函数表示纯虚函数,A,),virtual int vf(int);B)void vf(int)=0;,C)virtual void vf()=0;D)virtual void vf(int),在下面程序中,,A,、,B,、,C,、,D,四句编译时出现错误的是,class A /A,public:/B,A()func();/C,virtual void func()=0;/D,;,下列程序的运行结果如下:,Base,s cons.,Derived,s cons.,Derived,s des.

16、Base,s des.,class Base,public:,Base()cout,“,Base,s cons.,”,endl;,cout,“,Base,s des.,”,endl;,;,class Derived:public Base,public:,Derived()cout,“,Derived,s cons.,”,endl;,Derived()cout,“,Derived,s des.,”,endl;,;,void main(),Base*ptr=,delete ptr;,#include,class Base,public:,virtual int func()return 0;,

17、class Derived:public Base,public:,int func()return 100;,;,void main(),Derived d;,Base,coutb.func()endl;,coutb.Base:func()endl;,class base1,public:,virtual int fun()cout,“,base1,”,endl;,class base2,public:,void fun()cout,“,base2,”,endl;,class derived:public base1,public base2,public:,void fun()cout

18、derived,”,fun();,p2=,p2-fun();,#include,class Base,public:,Base()cout,“,Constructor of Base.,”,endl;fun();,virtual void fun()cout,“,Base:fun()called.,”,endl;,;,class Derived:public Base,public:,Derived()cout,“,Constructor of Derived.,”,endl;fun();,void fun()cout,“,Derived:fun()called.,”,endl;,;,void main(),Derived obj;,谢谢观看,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服