派生类的构造函数与析构函数.ppt
《派生类的构造函数与析构函数.ppt》由会员分享,可在线阅读,更多相关《派生类的构造函数与析构函数.ppt(38页珍藏版)》请在咨信网上搜索。
1、派生类的构造函数与析构函数派生类的构造函数与析构函数第三章第三章 继承继承1 13 32 2继承方式继承方式类的继承与派生类的继承与派生4 4虚基类虚基类5 5聚合类聚合类6 6继承应用实例继承应用实例本本章章内内容容2024/5/25 周六1 3.1 类的继承与派生类的继承与派生3.1.1 3.1.1 继承与派生实例继承与派生实例q继承是软件重用的一种形式。继承是将自然界中继承是软件重用的一种形式。继承是将自然界中存在的存在的普遍和特殊关系普遍和特殊关系用程序设计的方式进行分用程序设计的方式进行分类描述类描述;q在设计新类时,允许在设计新类时,允许重用某个原有类的所有特征重用某个原有类的所有
2、特征,并在此基础上并在此基础上添加新类的新特征添加新类的新特征。q被重用的原有类称为被重用的原有类称为基类基类basebase class class而新创建的而新创建的类称为类称为派生类派生类derived derived classclass。q派生类派生类不会影响到原有类的结构不会影响到原有类的结构。2024/5/25 周六2实例实例:某一小型公司的实例某一小型公司的实例企业员工企业员工工作编号工作编号姓名姓名显示企业员工信息显示企业员工信息计算实际发放工资计算实际发放工资行政人员行政人员(与与企企业业员员工工类类相相同)同)计算实际发放工资计算实际发放工资经理经理公司总销售额公司总销售
3、额提提成成比比例例(其其余余同同企业员工类)企业员工类)计算实际发放工资计算实际发放工资销售人员销售人员个人销售额个人销售额提提成成比比例例(其其余余同同企业员工类)企业员工类)计算实际发放工资计算实际发放工资2024/5/25 周六33.1 类的继承与派生类的继承与派生针对该公司的情况,先设计:针对该公司的情况,先设计:p一一个个一一般般员员工工类类CCompanyStaff,代代表表员员工工的的共共性;性;q让让三三个个新新类类分分别别继继承承一一般般员员工工类类CCompanyStaff,然然后后根根据据各各自自的的差差异异性性,新新类类可可以以对对继继承承来来的的内内容容进行改造。进行
4、改造。2024/5/25 周六43.1.2 派生类的定义派生类的定义q从已有类产生新类从已有类产生新类的过程就是类的派生。的过程就是类的派生。q定义语法如下:定义语法如下:class class:,:2 ;3.1 类的继承与派生类的继承与派生2024/5/25 周六5继承继承方式方式分为三种关键字分为三种关键字:public private protected;q单继承(只有一个基类名)和多继承;单继承(只有一个基类名)和多继承;q该公司情况类代码:该公司情况类代码:企业员工类企业员工类 相关派生类相关派生类 P79P79q经理、销售人员、行政人员这三个派生类在声明语句经理、销售人员、行政人员
5、这三个派生类在声明语句中分别指定了它们的基类中分别指定了它们的基类CCompanyStaff,以及它以及它们的继承方式们的继承方式public;qCSaleManager类,类,同时继承经理类同时继承经理类Cmanager和销售和销售人员类人员类Csaleman;3.1 类的继承与派生类的继承与派生2024/5/25 周六6销售员销售员经理经理行政主管行政主管行政人员行政人员企业员工企业员工类图类图3.1.3继承的级别继承的级别 增加行政主管一职,员工关系图如下:增加行政主管一职,员工关系图如下:3.1 类的继承与派生类的继承与派生2024/5/25 周六7q用用C+语语言言描描述述三三个个类
6、类的的前前向向引引用用声声明明,形形成成了了一一个个“类家族类家族”:class CCompanyStaff;/基类员工基类员工 /派生类行政人员继承员工派生类行政人员继承员工 class CAdminStaff:public CCompanyStaff;/派生类行政主管继承行政人员派生类行政主管继承行政人员class CForeAdmin:public CAdminStaff;q基类不受派生类变化的影响;基类不受派生类变化的影响;q派派生生类类继继承承了了基基类类的的全全部部数数据据成成员员和和除除了了构构造造函函数数析析构构函函数数之之外外的的全全部部成成员员函函数数,但但是是派派生生类类
7、能能否否访问这些成员还要受继承方式的约束访问这些成员还要受继承方式的约束;3.1 类的继承与派生类的继承与派生2024/5/25 周六83.2 3.2 继承方式继承方式3.2.1 3.2.1 公有继承公有继承q类的继承方式有类的继承方式有public、private和和protected三三种,种,其中其中private是缺省的继承方式;是缺省的继承方式;q 公有继承:公有继承:基类各成员的基类各成员的访问权限访问权限如果是如果是public或或protected则在派生类中保持不变而基类中的则在派生类中保持不变而基类中的private成员对派生类成员对派生类不可见不可见,如图:,如图:202
8、4/5/25 周六9privateprivate基类基类Base图图3.3 公有继承中的访问控制公有继承中的访问控制protectedprotectedpublicpublicprivateprivate派生类派生类Derv:public BaseprotectedprotectedpublicpublicDerv objDBase objB3.2 继承方式继承方式2024/5/25 周六10 q例例3.1 3.1 一个公有继承的例子一个公有继承的例子:sclass3_1.h sclass3_1.cpp smain3_1.cpp q 基基类类A A的的所所有有成成员员在在派派生生类类中中的的访
9、访问问控控制制权权限限都都保持不变保持不变。3.2 3.2 继承方式继承方式2024/5/25 周六113.2.23.2.2私有继承:私有继承:q基基类类各各成成员员无无论论是是何何种种访访问问权权限限在在派派生生类类中中一一律律以以privateprivate的的身身份份出出现现,连连派派生生类类的的对对象象也也无无法法访访问问,只有派生类的函数能在类内访问它们。只有派生类的函数能在类内访问它们。q若若要要私私有有继继承承来来的的某某些些基基类类的的成成员员函函数数在在派派生生类类中也能对外可见,中也能对外可见,需在派生类中对其成员公有化需在派生类中对其成员公有化。using CAnimal
10、:SetWeight;/在派生类中将在派生类中将基类的成员函数基类的成员函数SetWeight()公有化公有化using CAnimal:GetWeight;/在派生类中将在派生类中将基类的成员函数基类的成员函数GetWeight()公有化公有化q例例3.2 3.2 私有继承中的公有化私有继承中的公有化:sclass3_2.h smain3_2.cpp 3.2 继承方式继承方式2024/5/25 周六12q 私私有有继继承承后后的的基基类类成成员员成成为为了了派派生生类类的的私私有有成成员员,实际上相当于实际上相当于终止了基类功能的继续派生。终止了基类功能的继续派生。class :privat
11、e public:using:;/公有化公有化;3.2 继承方式继承方式2024/5/25 周六133.2.33.2.3保护继承:保护继承:q protectedprotected访问权限:访问权限:设计基类时,在隐藏成员的同时还要允许派生设计基类时,在隐藏成员的同时还要允许派生类的成员能访问到,这时类的成员能访问到,这时protected protected 就比就比privateprivate更合适;更合适;例例3.3 3.3 保护权限举例保护权限举例:sclass3_3.h smain3_3.cpp3.2 继承方式继承方式2024/5/25 周六14q使用使用protectedprote
12、cted修饰类成员存在的隐患,它修饰类成员存在的隐患,它破坏了破坏了封装封装;q protectedprotected继承继承;保保护护继继承承下下基基类类各各成成员员的的访访问问权权限限(除除privateprivate外外)都以都以protectedprotected权限出现;权限出现;q比比较较私私有有继继承承和和保保护护继继承承,可可以以看看出出在在直直接接派派生生类类中中两两者者的的效效果果实实际际上上都都相相同同,但但如如果果再再继继续续派派生下去就会出现区别;生下去就会出现区别;3.2 继承方式继承方式2024/5/25 周六15q假假设设有有A A-B-B-C C这这样样一一个
13、个继继承承顺顺序序如如果果B B私私有有继继承承A A后后又又派派生生出出C C那那么么C C就就无无法法再再间间接接继继承承A A的的成成员员对对A A功能的继承在功能的继承在B B那儿就终止了;那儿就终止了;q而而如如果果B B保保护护继继承承A A后后又又派派生生出出C C那那么么A A中中的的公公有有和和保保护护成成员员在在B B中中都都是是保保护护成成员员因因此此A A的的功功能能可可以以被被C C间接继承;间接继承;q在实际开发时选择在实际开发时选择恰当的恰当的继承方式;继承方式;3.2 继承方式继承方式2024/5/25 周六163.2 继承方式继承方式3.2.43.2.4多继承
14、多继承(多个父类多个父类):):q 声明声明多继承多继承的语法如下的语法如下:class class :,1,2,q多继承举例:在公司员工管理中多继承举例:在公司员工管理中q有时会存在多继承关系,如图:有时会存在多继承关系,如图:经理经理销售部经理销售部经理销售人员销售人员2024/5/25 周六173.3 派生类的构造函数和析构函数派生类的构造函数和析构函数3.3.13.3.1构造函数:构造函数:q 在在创创建建派派生生类类的的对对象象时时,系系统统执执行行派派生生类类的的构构造造函数而不会自动执行基类的构造函数;函数而不会自动执行基类的构造函数;q 在在设设计计派派生生类类的的构构造造函函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 派生 构造 函数
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。