C++程序设计基础教程全套PPT课件.ppt

  1. 1、本文档共757页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++程序设计基础教程全套PPT课件.pptC++程序设计基础教程全套PPT课件.ppt

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】根据冲突情况与支配规则,分析下列程序的运行

文档评论(0)

153****9532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6101234030000022

1亿VIP精品文档

相关文档