欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    高级程序设计.PPT

    • 资源ID:506229       资源大小:223.50KB        全文页数:39页
    • 资源格式: PPT        下载积分:7金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要7金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    高级程序设计.PPT

    高级程序设计高级程序设计一、继承总结一、继承总结 继承方式:继承方式:public :公有继承公有继承 protected:保护继承保护继承 private :私有继承私有继承访问控制属性:访问控制属性:public :公有类型公有类型 protected :保护类型保护类型 private :私有类型私有类型继承方式与访问控制属性继承方式与访问控制属性:基类的公有成员和保护成员作为派生类公有成员时,保持不变,但基类的公有成员和保护成员作为派生类公有成员时,保持不变,但基类的私有成员不可访问。基类的私有成员不可访问。:基类的公有成员和保护成员作为派生类私有成员,变成私有,但基基类的公有成员和保护成员作为派生类私有成员,变成私有,但基类的私有成员不可访问。类的私有成员不可访问。:基类的公有成员和保护成员作为派生类保护成员,变成保护,但基基类的公有成员和保护成员作为派生类保护成员,变成保护,但基类的私有成员不可访问。类的私有成员不可访问。不同继承方式的基类不同继承方式的基类/派生类特性派生类特性基类成员访问控制基类成员访问控制继承访问控制继承访问控制在派生类中的访问控制在派生类中的访问控制publicpublicpublicprotectedprotectedprivate不可访问不可访问publicprotectedprotectedprotectedprotectedprivate不可访问不可访问publicprivateprivateprotectedprivateprivate不可访问不可访问基类基类/派生类的关系派生类的关系 任何一个类都可以派生出一个新类,派生类也可以派生出新任何一个类都可以派生出一个新类,派生类也可以派生出新的类,即一个基类是另一个基类的派生类,构成了类的层次结构。的类,即一个基类是另一个基类的派生类,构成了类的层次结构。ABCA 是是 B 的基类,的基类,B 是是 C 基类;基类;称称 B 是是 A 的直接派生类;的直接派生类;A 是是 C 的间接基类;的间接基类;二二、继承与构造函数、继承与构造函数/析构函数析构函数1、问题:、问题:类都有构造函数类都有构造函数/析构函数,基类析构函数,基类/派生类也有。派生类也有。则则(1)派生类和基类的构造函数和析构函数是如何被调用的?派生类和基类的构造函数和析构函数是如何被调用的?(2)基类构造函数是如何获得实际参数的?基类构造函数是如何获得实际参数的?2、规则:、规则:(1)派生类并不继承基类的构造派生类并不继承基类的构造/析构函数,相反派生类的构造函数必析构函数,相反派生类的构造函数必须向基类的构造函数提供实参。须向基类的构造函数提供实参。(2)创建一个派生类的对象时,则先调用基类的构造函数,然后调用派创建一个派生类的对象时,则先调用基类的构造函数,然后调用派生类的构造函数;派生类的对象被撤销时析构函数的调用次序相反。生类的构造函数;派生类的对象被撤销时析构函数的调用次序相反。3、派生类构造函数的形式、派生类构造函数的形式():(参数(参数),(参数(参数)例:例:B:B(int i,int k):A(i)b=k;coutBs createendl;初始化列表初始化列表举例:从举例:从vehicle(汽车汽车)派生派生car(小汽车小汽车)类。类。#include class vehicle/基类基类vehicle类的声明类的声明private:/私有数据成员私有数据成员 int wheels;protected:/保护数据成员保护数据成员 float weight;public:/公有函数成员公有函数成员 vehicle(int in_wheels,float in_weight)wheels=in_wheels;weight=in_weight;int get_wheels()return wheels;float get_weight()return weight;/派生类派生类car类的声明类的声明class car:public vehicle private:/新增私有数据成员新增私有数据成员 int passenger_load;public:/新增公有函数成员新增公有函数成员 car(int in_wheels,float in_weight,int people=5):vehicle(in_wheels,in_weight)passenger_load=people;int get_passengers()return passenger_load;void main()car bluebird(4,1000);/声明声明car类的对象类的对象 coutThe message of bluebird(wheels,weight,passengers):endl;coutbluebird.get_wheels(),/输出小汽车的信息输出小汽车的信息 bluebird.get_weight(),bluebird.get_passengers()endl;程序运行结果为:程序运行结果为:The message of bluebird(wheels,weight,passengers):4,1000,5例,继承中的构造例,继承中的构造/析构函数析构函数class Apublic:A()a=0;coutAs default createendl;A(int i)a=i;coutAs createendl;A()coutAs deletedendl;void aprint()couta,;int geta()return a;private:int a;class B:public Apublic:B()b=0;coutBs default createendl;B(int i,int j,int k);B()coutBs deletedendl;void print();private:int b;A aa;/类成为数据成员类成为数据成员;B:B(int i,int j,int k):A(i),aa(j)b=k;coutBs createendl;void B:print()aprint();coutb,aa.geta()endl;void main()B bb2;bb0=B(1,2,5);bb0.print();As default createAs default createBs default createAs default createAs default createBs default createAs createAs createBs createBs deletedAs deletedAs deleted1,5,2Bs deletedAs deletedAs deletedBs deletedAs deletedAs deleted结论:结论:创建一个派生类的对象时,构造函数的执行次序:创建一个派生类的对象时,构造函数的执行次序:(1)先调用基类的构造函数先调用基类的构造函数(2)子对象类的构造函数子对象类的构造函数(3)派生类的构造函数派生类的构造函数派生类的对象被撤销时,析构函数的执行次序:派生类的对象被撤销时,析构函数的执行次序:析构函数的调用次序与构造函数相反。析构函数的调用次序与构造函数相反。三、同名覆盖原则三、同名覆盖原则但派生类中存在同基类同名的成员时,派生类覆但派生类中存在同基类同名的成员时,派生类覆盖基类;可通过基类名加上盖基类;可通过基类名加上”:”在派生类中对基类中在派生类中对基类中的成员进行访问的成员进行访问#includeclass CAprotected:int x,y;public:void set(int m,int n)x=m;y=n;class CB:public CAprotected:int x,y;public:void set(int m,int n)x=m;y=n;CA:set(m+2,n+3);void main()CB b;b.CA:set(3,4);b.set(23,45);四、多继承四、多继承1、概念、概念多继承(多重继承):为一个派生类指定多个基类。或者说,一多继承(多重继承):为一个派生类指定多个基类。或者说,一个子类从多个基类中派生出来,它继承了多个类的基本特性。个子类从多个基类中派生出来,它继承了多个类的基本特性。2、派生类的定义、派生类的定义单继承派生类的定义格式:单继承派生类的定义格式:class :;多继承派生类的定义格式:多继承派生类的定义格式:class :,;说明:说明:(1)派生类与每个类之间的关系仍可看作是一个单继承。)派生类与每个类之间的关系仍可看作是一个单继承。(2)多个基类中的成员相同时,通过子类的对象调用时,无法确定)多个基类中的成员相同时,通过子类的对象调用时,无法确定是哪一个基类的成员,容易产生二义性。是哪一个基类的成员,容易产生二义性。例,例,床床/沙发沙发/折叠沙发折叠沙发class bed /多重继承多重继承public:bed():weight(0)void sleep()coutSleeping.n;void setweight(int i)weight=i;protected:int weight;class sofapublic:sofa():weight(0)void watchtv()cout“Watching tv.n;void setweight(int i)weight=i;protected:int weight;class sleepersofa:public bed,public sofapublic:sleepersofa()void foldout()coutFold out the sofa.n;void main()sleepersofa ss;ss.watchtv();ss.foldout();ss.sleep();ss.sofa:setweight(90);/ss.setweight(90)错错watching tv.Fold out the sofa.sleeping例、多重继承与构造函数的关系例、多重继承与构造函数的关系class B1 public:B1(int i)b1=i;coutconstructor B1.-iendl;void print()coutb1endl;private:int b1;class B2public:B2(int i)b2=i;coutconstructor B2.-iendl;void print()coutb2endl;private:int b2;class B3public:B3(int i)b3=i;coutconstructor B3.-iendl;int getb3()return b3;private:int b3;class A:public B2,public B1public:A(int i,int j,int k,int m):B1(i),B2(j),bb(k)a=m;coutconstructor A.-mendl;void print()/没有该函数则产生二义性没有该函数则产生二义性 B1:print();B2:print();couta,bb.getb3()endl;private:int a;B3 bb;void main()A aa(1,2,3,4);aa.print();构造函数的执行次序:构造函数的执行次序:(1)基类:依派生的次序决定)基类:依派生的次序决定(2)子对象的构造函数)子对象的构造函数(3)派生类的构造函数)派生类的构造函数程序运行结果:程序运行结果:constructor B2.-1constructor B1.-2constructor B3.-3constructor A.-4124,3规则:规则:(1)析构函数不能继承;)析构函数不能继承;(2)派生类中要定义自己的析构函数释放在派

    注意事项

    本文(高级程序设计.PPT)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开