C++程序设计 王春玲 第6章新.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文档。上传文档
查看更多
第6章 继承和派生 本章主要内容 1.继承的概念。 2.派生类的定义和派生类对基类成员的访问权限。 3.派生类的构造函数和析构函数。 4.基类指针与派生类指针的使用。 5.多继承的二义性和虚基类。 6-1 继承的概念 继承(Inheritance)就是在一个已存在的类的基础上建立一个新类,实质就是利用已有的数据类型定义出新的数据类型。 在继承关系中: 被继承的类称为基类(Base class)(或父类) 定义出来的新类称为派生类(Derived class)(子类) 派生类不仅可以继承原来类的成员,还可以通过以下方式扩充新的成员: (1)增加新的数据成员 (2)增加新的成员函数 (3)重新定义已有成员函数 (4)改变现有成员的属性 6-2 派生类的定义 6-2-1 单继承的定义 class 派生类名: 访问方式 基类名 { 派生类中的新成员 } 其中: (1)class是定义类的关键字;派生类名由用户自己命名。 (2)在冒号“:”后的内容告诉系统,这个派生类是从哪个基类派生的以及在派生时的继承方式是什么。 (3)继承方式即访问方式,可以为public、protected或private,如果省略,则默认为private方式。 (4)基类名必须是程序中已有的一个类的类名。 (5)大括号内的部分是派生类中新定义的成员或是对基类成员的改造。 6-2-2 多继承的定义 class 派生类名:访问方式 基类名1,访问方式 基类名2 …… { …… }; 其中: (1)继承方式为public、protected或private,功能同单一继承。 (2)在冒号“:”后要列出派生类的所有基类及其继承方式,并用逗号做分隔符。 6-2-3 派生类的成员构成 派生新类经历了三个步骤: (1)吸收基类成员 派生类继承和吸收了基类的全部数据成员和除了构造函数、析构函数之外的全部成员函数。 (2)改造基类成员 一是基类成员的访问方式问题; 二是对基类数据成员或成员函数的覆盖。 (3)添加新成员 保证了派生类在功能上比基类有所发展。 6-3 派生类对基类成员的访问 1. 公有继承(public继承方式) 基类中public和protected成员的访问属性在派生类中不变; 而基类中的不可访问成员和private成员在派生类中不可访问。 注意:不可访问成员与私有成员的区别。 2. 私有继承(private继承方式) 基类中public和protected成员都以private成员出现在派生类中; 而基类中的不可访问成员和private成员在派生类中不可访问。 相当于中止了基类功能的继续派生! 3. 保护继承(protected继承方式) 基类中public和protected成员都以protected成员出现在派生类中; 而基类中的不可访问成员和private成员在派生类中不可访问。 类的继承方式对基类成员的访问属性控制 6-4 派生类的构造函数和析构函数 派生类的构造函数: 一方面负责调用基类的构造函数对基类成员进行初始化; 另一方面还要负责对基类的构造函数所需要的参数进行必要的设置。 6-4-1 单继承方式下派生类的构造函数 派生类名::派生类构造函数名(总参数列表):基类构造函数名(参数列表) { 派生类中新增数据成员初始化语句 } 【例6-2】设计一个点类Point,包含横、纵坐标两个数据成员,由它派生出圆类Circle,添加一个半径数据,并求其面积。测试基类的构造函数和派生类的构造函数的执行顺序。 【例6-3】定义一个描述圆的类Circle和一个描述圆柱体的类Cylinder,并计算其相应的面积。 在C++中,处理同名函数时有以下3种基本方法: ① 根据函数参数的特征进行区分。如: max(int,int) max(float,float) ② 根据类对象进行区分。 cylinder.area() circle.area() ③ 使用作用域运算符“::”进行区分,如: Ccircle::area() 6-4-2 多继承方式下派生类的构造函数 派生类名::派生类构造函数名(参数表):基类名1(参数表1),基类名2(参数表2),…… { 派生类中新增数据成员初始化语句 } 在多重继承下,系统首先执行各基类的构造函数,然后再执行派生类的构造函数; 处于同一层次的各基类构造函数的执行顺序与声明派生类时所指定的各基类顺序一致,而与派生类的构造函数定义中所调用的基类构造函数的顺序无关。 【例6-4】测试在多重继承关系下基类和派生类的构造函数的执行顺序。 6-4-3 有子对象的派生类的构造函数与析构函数 派生类名::派生类构造函数名(总参数列表):

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档