- 1、本文档共757页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
7.2派生类的构造函数与析构函数【源程序代码】classA{public:A(intx=0){coutx\n;}};classB{public:B(intx){coutx\n;}};classC:publicA{public:C(intx){coutx\n;}};classD:publicB{public:D(intx)//语法错误{coutx‘\n’;}};:A():B()?7.2派生类的构造函数与析构函数7.2.2多继承时的派生类的构造函数1.多基类派生类构造函数派生类构造函数头部逐一列出各基类构造函数调用。派生类名(形参列表):基类名1(实参列表1),基类名2(实参列表2),...,基类名n(实参列表n){新增成员初始化}类中说明派生类名(形参列表);类外定义派生类名::派生类名(形参列表):基类名1(实参列表1),基类名2(实参列表2),...,基类名n(实参列表n){新增成员初始化}7.2派生类的构造函数与析构函数7.2.2多继承时的派生类的构造函数2.多级派生类构造函数若每级的派生类都只有一个基类,则各级派生类构造函数的定义都与单继承时构造函数的定义方法相同;若其中某级有多个基类,则该级派生类构造函数的定义采用多基类派生类构造函数定义的方法。类A类B类C类E类DB(形参):A(实参){函数体}C(形参):B(实参){函数体}E(形参):D(实参),C(实参){函数体}7.2派生类的构造函数与析构函数7.2.3派生类对象生成派生类对象时必须调用构造函数初始化数据成员先调用基类构造函数初始化派生数据成员;再执行派生类构造函数函数体,初始化新增数据成员。若派生类是多级派生类,则要向上逐级调用基类的构造函数;若派生类是多基类派生类,则要按照继承顺序逐一调用各基类的构造函数。【例7-6】分析下列多基类继承和多级继承时,派生类对象的产生过程,写出程序运行结果。7.2派生类的构造函数与析构函数【源程序代码】classA{public:A(){cout调用类A构造函数\n;}};classB{public:B(){cout调用类B构造函数\n;}};classC:publicB,publicA{//多基类继承public:C(){cout调用类C构造函数\n;}};classD:publicC{//多级继承public:D(){cout调用类D构造函数\n;}};intmain(){Ct1;Dt2;return0;}程序运行结果调用类B构造函数调用类A构造函数调用类C构造函数调用类B构造函数调用类A构造函数调用类C构造函数调用类D构造函数publicA,publicB结果?7.2派生类的构造函数与析构函数7.2.4派生类析构函数释放派生类的对象,包括新增成员和派生成员的空间;先执行派生类析构函数的函数体,释放新增成员;再调用其基类的析构函数,释放派生成员。释放派生类对象(调用析构函数)与建立派生类对象(调用构造函数)的顺序相反。如例7-6中:先建立对象t1,后建立对象t2;则先释放t2,后释放t1。建立t2时,构造函数调用顺序:类B→类A→类C→类D;释放t2时,析构函数调用顺序:类D→类C→类A→类B。建立t1时,构造函数调用顺序:类B→类A→类C;释放t1时,析构函数调用顺序:类C→类A→类B。7.3冲突及解决方法7.3.1冲突1.冲突的概念派生类中,同时存在来自不同类的名称相同的成员来自不同基类的名称相同的派生成员;从基类继承的派生成员与派生类中的新增成员。基类Aax基类Bbx派生类CaA::xbB::x基类Aax派生类DaA::xdD::x2.冲突解决方法:用“类名::”来区分不同作用域(类)的同名成员。7.3.2支配规则若新增成员与派生成员同名,在没有使用类名和作用域运算符进行限定时,默认使用的是新增成员。没有出现同名冲突时,既可以用类名和作用域运算符使用成员,也可以直接使用成员,习惯于直接使用成员;派生成员之间冲突时,必须用“类名::”使用成员;派生成员与新增冲突时,用“类名::”使用派生成员;可以用“类名::”使用新增成员,也可以直接使用新增成员。【例7-7】根据冲突情况与支配规则,分析下列程序的运行
您可能关注的文档
- 信息技术导论-全套PPT课件.pptx
- JavaScript前端开发模块化教程_全套PPT课件.pptx
- 计算机常用算法与程序设计教程(第2版)全套PPT课件.ppt
- Java Web程序设计与案例教程(微课版)全套PPT课件.pptx
- Linux网络操作系统项目教程(RHEL7.4CentOS7.4)(第3版)》全套PPT课件.pptx
- 财经法规与会计职业道德(第3版)——全套PPT课件.ppt
- 高级财务会计_全套PPT课件.pptx
- Python编程基础(视频讲解版)全套PPT课件.pptx
- Vue.js前端开发技术-全套PPT课件.pptx
- Python游戏设计案例实战全套PPT课件.ppt
最近下载
- 内蒙古版综合实践活动五年级下册第三课 今天我是小交警 课件.ppt
- 道德与法治四年级上册第一单元 与班级共成长 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx
- 公安寄递物流业治安管理.pptx VIP
- 2024年苏科版九年级数学下册第六章《相似图形》课件.ppt VIP
- 故事——小羊过桥.ppt
- 自动售货机plc控制系统设计.doc
- 股先知周线指标公式通达信版(1).docx VIP
- 选择结构程序设计-C语言程序试验报告.pdf
- 以廉洁风险防控为核心的“三不腐”机制应用-来源:现代企业文化(第2020010期)-中国工人出版社.pdf VIP
- 疯狂星期二_13610597.pdf
文档评论(0)