欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (5.3)--第5章继承 - (03)_派生类的构造和析构的函数.ppt

    • 资源ID:96639041       资源大小:9.56MB        全文页数:13页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    (5.3)--第5章继承 - (03)_派生类的构造和析构的函数.ppt

    面向对象程序设计1第5章 继 承2派生类的构造函数与析构函数派生类的构造函数与析构函数01.派生的构造函数派生的构造函数02.派生类的析构函数派生类的析构函数03.构造和析构的调用次序构造和析构的调用次序3第章继承派生类的构造函数与析构函数l派生类中需要声明自己的构造函数。派生类中需要声明自己的构造函数。l声明构造函数时,只需要对本类中新增成员进行初始化,对声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成。继承来的基类成员的初始化,自动调用基类构造函数完成。l派生类的构造函数需要给基类的构造函数传递参数派生类的构造函数需要给基类的构造函数传递参数1、派生类的构造函数、派生类的构造函数2、派生类构造函数的定义、派生类构造函数的定义 派生类名派生类名(参数参数总表总表):基类名基类名1(参数表参数表1),基类名基类名m(参数表参数表m),成员对成员对象名象名1(成员对象参数表成员对象参数表1),成员对象名成员对象名n(成员对象参成员对象参数表数表n)派生类派生类新增成员新增成员的初始化;的初始化;基类成员的基类成员的初始化表初始化表3、派生类构造函数调用规则、派生类构造函数调用规则单继承时,派生类构造函数调用的单继承时,派生类构造函数调用的一般次序如下:一般次序如下:(1)调用基类构造函数。调用基类构造函数。(2)调用内嵌成员对象的构造函数,调用内嵌成员对象的构造函数,调用顺序取决于它们在类中定义调用顺序取决于它们在类中定义的顺序。的顺序。(3)派生类自己的构造函数。派生类自己的构造函数。派生类构造函数的派生类构造函数的总参数总参数表中定义的参数个数等于表中定义的参数个数等于基类中基类中构造函数参数的个构造函数参数的个数数和和派生类中新增数据成派生类中新增数据成员的个数之和员的个数之和,新增成员,新增成员包括普通数据成员和子对包括普通数据成员和子对象数据成员。象数据成员。4【例【例5-5】单继承机制下构造函数的调用顺序。】单继承机制下构造函数的调用顺序。#include using namespace std;class Baseclass public:Baseclass(int i)a=i;coutconstructing Baseclass a=aendl;private:int a;class Derivedclass:public Baseclass public:Derivedclass(int i,int j);private:int b;Derivedclass:Derivedclass(int i,int j):Baseclass(i)b=j;coutconstructing Derivedclass b=bendl;int main()Derivedclass x(5,6);return 0;constructing Baseclass a=5constructing Derivedclass b=6程序输出结果为:程序输出结果为:第章继承派生类的构造函数与析构函数5当一个类既是派生类同时又包含嵌入对象时,构造函数调用次序:当一个类既是派生类同时又包含嵌入对象时,构造函数调用次序:调用基类的构造函数调用基类的构造函数按类声明中嵌入对象出现的次序调用嵌入对象的构造函数按类声明中嵌入对象出现的次序调用嵌入对象的构造函数执行派生类的构造函数执行派生类的构造函数通过初始化列表向嵌入对象的构造函数传递参数。通过初始化列表向嵌入对象的构造函数传递参数。组合的概念:一个组合的概念:一个类中的数据成员包含另一个类的对象类中的数据成员包含另一个类的对象。第章继承派生类的构造函数与析构函数.组合组合6【例【例5-6】包括派生类新增的数据中有成员】包括派生类新增的数据中有成员对象对象时,其构造函数的调用顺序。时,其构造函数的调用顺序。#include using namespace std;class Base1/基类基类 public:Base1(int i)a=i;coutconstructing Base1 a=aendl;private:int a;class Base2 public:Base2(int i)b=i;coutconstructing Base2 b=bendl;private:int b;class Base3 public:Base3(int i)c=i;coutconstructing Base3 c=cendl;private:int c;class Derivedclass:public Base1 public:Derivedclass(int i,int j,int k,int m);private:int d;Base2 f;Base3 g;第章继承派生类的构造函数与析构函数7Derivedclass:Derivedclass(int i,int j,int k,int m):Base1(i),g(j),f(k)d=m;coutconstructing Derivedclass d=dendl;int main()Derivedclass x(5,6,7,8);return 0;constructing Base1 a=5constructing Base2 b=7constructing Base3 c=6constructing Derivedclass d=8Press any key to continue注意:注意:成员对象成员对象f和和g的调用顺序取决于它们有的调用顺序取决于它们有派生类中被声明的顺序,与它们在成员初始化列派生类中被声明的顺序,与它们在成员初始化列表中的顺序无关。表中的顺序无关。程序运行结果:程序运行结果:第章继承派生类的构造函数与析构函数85.派生类析构函数派生类析构函数派生类的析构函数的功能是在该类对象消亡之前派生类的析构函数的功能是在该类对象消亡之前进行一些必要的清理工作。进行一些必要的清理工作。l析构函数也不被继承,派生类自行声明析构函数也不被继承,派生类自行声明l声明方法与一般(无继承关系时)类的析构函数声明方法与一般(无继承关系时)类的析构函数相同。相同。l不需要显式地调用基类的析构函数,系统会自动不需要显式地调用基类的析构函数,系统会自动隐式调用。隐式调用。l析构函数的调用次序与构造函数相反。析构函数的调用次序与构造函数相反。(1)首先调用派生类的析构函数首先调用派生类的析构函数(清理派生清理派生类新增成员类新增成员);(2)如果派生类中有成员对象,再调用派生如果派生类中有成员对象,再调用派生类中成员对象所在类的析构函数(清理派类中成员对象所在类的析构函数(清理派生类新增的成员对象);生类新增的成员对象);(3)再调用普通基类的析构函数再调用普通基类的析构函数(清理从基清理从基类继承来的基类对象类继承来的基类对象);(4)最后调用虚基类的析构函数。(虚基类最后调用虚基类的析构函数。(虚基类的知识在后面讲解)的知识在后面讲解)析构函数调用规则如下:析构函数调用规则如下:析构析构函数执行顺序和构造函数正好相反函数执行顺序和构造函数正好相反先自己(派生类本身)再客人(内嵌对象)后祖先(基类)。回想回想一下构造函数的调用次序一下构造函数的调用次序?第章继承派生类的构造函数与析构函数9【例5-8】派生类析构函数的调用顺序。#include using namespace std;class Base1/基类 public:Base1(int i)a=i;cout“constructing Base1 a=”aendl;Base1()coutdestructing Base1endl;private:int a;class Base2/基类Base2 public:Base2(int i)/构造函数 b=i;coutconstructing Base2 b=bendl;Base2()/析构函数 coutdestructing Base2endl;private:int b;第章继承派生类的构造函数与析构函数录屏105-4.mp4class Base3/子对象f所属类 public:Base3(int i)/构造函数 c=i;coutconstructing Base3 c=cendl;Base3()/析构函数 coutdestructing Base3endl;private:int c;class Base4/子对象g所属类 public:Base4(int i)/构造函数 d=i;coutconstructing Base4 d=dendl;Base4()/析构函数 coutdestructing Base4endl;private:int d;第章继承派生类的构造函数与析构函数录屏115-4.mp4class Derivedclass:public Base1,public Base2 public:Derivedclass(int i,int j,int k,int m,int n);Derivedclass();private:int e;Base3 f;Base4 g;Derivedclass:Derivedclass(int i,int j,int k,int m,int n):Base1(i),Base2(j),f(k),g(m)e=n;coutconstructing Derivedclass e=eendl;Derivedclass:Derivedclass()/派生类析构函数派生类析构函数 coutdestructing Derivedclassendl;contructing Base1 a=5contructing Base2 b=6contructing Base3 c=7contructing Base4 d=8contructing Derivedclass e=9destructing Derivedclass destructing Base4destructing Base3destructing Base2destructing Base1第章继承派生类的构造函数与析构函数int main()Derivedclass x(5,6,7,8,9);return 0;录屏125-4.mp4本小节结束谢谢谢谢大大家家13

    注意事项

    本文((5.3)--第5章继承 - (03)_派生类的构造和析构的函数.ppt)为本站会员(奉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开