继承和多态课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. . 让IT教学更简单,让IT学习更有效 3.2 派生类 派生类中定义带参数构造函数的形式如下所示: 构造 函数 派生类名::派生类构造函数名(参数列表):基类构造函数名(基类构造函数参数表) { 派生类新增成员的初始化语句 } 案例代码 接下来,通过一个案例来演示。 [具体查看教材例3-7] . 让IT教学更简单,让IT学习更有效 3.2 派生类 构造 函数 派生类构造函数名后面括号内的参数列表中,应包含基类和派生类构造函数,需要进行初始化的所有数据成员的参数值。冒号后面的内容是要调用的基类构造函数及其参数,在这里是对基类构造函数的调用,因此参数为实参,不需要有类型名,基类构造函数后面的内容还可以是常量、全局变量。 1 例如,Cat类的构造函数也可定义成如下形式,基类的数据成员使用常量进行初始化,具体代码如下所示: //派生类构造函数,调用基类函数时提供了常量值,不需要使用派生类构造函数的参数 Cat::Cat(string con_name):Animal(3, 4) { name = con_name; cout Cat constructor with param! endl; } . 让IT教学更简单,让IT学习更有效 3.2 派生类 构造 函数 虽然公有派生类的构造函数中可以直接访问基类的公有和保护数据成员,甚至可以在构造时初始化它们,但是一般不这样做,而是通过基类的接口(即成员函数)去访问他们,初始化也是通过基类的构造函数,这样可以减少类之间的耦合性。 2 若基类没有构造函数或仅存在无参构造函数,则在派生类构造函数的定义中可以省略对基类构造函数的调用。 3 . 让IT教学更简单,让IT学习更有效 3.2 派生类 构造 函数 当基类的构造函数使用一个或多个参数时,派生类中必须定义构造函数,提供将参数传递给基类构造函数的方法,从而实现对基类数据成员的初始化。此时,派生类的构造函数体可能为空,仅仅为了向基类传递数据。 4 [具体查看教材代码] . 让IT教学更简单,让IT学习更有效 3.2 派生类 析构 函数 与构造函数类似,派生类也不可以继承基类的析构函数,若想完成派生类中新增数据成员的资源释放,需要在派生类中定义析构函数。同样,若派生类中没有显式定义析构函数,编译系统会提供一个默认的析构函数。 析构函数执行次序与构造函数相反,先要调用派生类的析构函数,然后再调用基类的析构函数。 案例代码 接下来,通过一个案例来演示。 [具体查看教材例3-8] . 让IT教学更简单,让IT学习更有效 3.2 派生类 隐藏 基类 函数 有时派生类需要根据自身特点改写从基类继承的函数,比如动物都有叫声,在描述动物的类中可以定义speak()函数,不同的动物,叫声也不同,比如猫、狗都有特定叫声。若定义猫科类,该类继承自动物类,继承了speak()函数,但在猫科类中需要改写speak()函数,用于描述猫特有的叫声。 派生类中重新定义基类同名函数的方法,称为对基类函数的覆盖或改写,覆盖后基类同名函数在派生类中被隐藏。定义派生类对象调用该函数时,调用的是自身的函数,基类同名函数不被调用。 案例代码 接下来,通过一个案例来演示。 [具体查看教材例3-9] . 让IT教学更简单,让IT学习更有效 3.3 多重继承 前面介绍的继承方式都是单继承,即派生类的基类只有一个。现实世界中,一个派生类往往会有多个基类。 水鸟的多重继承结构 案例代码 接下来,通过一个案例来演示。 声明多重继承的方式 [具体查看教材例3-11] . 让IT教学更简单,让IT学习更有效 3.3 多重继承 案例代码 接下来,通过一个案例来演示。 与单继承中派生类的构造函数类似,多重继承派生类的构造函数不但要对派生类中新增成员完成初始化,还要依次对各基类的继承成员进行初始化。派生类对某个基类构造函数操作的规则与单继承中派生类的构造函数操作规则相同。 多重继承派生类的构造函数定义形式如下所示: 派生类名::派生类构造函数名(参数总表):基类1构造函数名(参数表1), 基类2构造函数名(参数表2), … { 派生类构造函数体 } 多重继承派生类的构造函数 [具体查看教材例3-12] . 让IT教学更简单,让IT学习更有效 3.3 多重继承 案例代码 接下来,通过一个案例来演示。 派生类中新增加的成员还可以是类对象。假如派生类是多重继承,并且新增数据成员有一个或多个对象成员,那么派生类需要初始化的数据有三部分:继承的数据成员、新增类对象的成员和新增普通成员。 这种复杂派生类的构造函数定义形式如下所示: 派生类名::派生类构造函数名(参数列表

文档评论(0)

日度 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档