基类私有成员基类公有成员派生类成员-Read.ppt

基类私有成员基类公有成员派生类成员-Read.ppt

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

第11章 继承和派生类 11.1 继承与派生 继承是软件重用的一种形式,它允许在已有类的基础上创建新的类。新类可以从一个或多个已有类中继承成员函数和数据,也可以加入新的成员数据和函数。 由已有的类产生新类的过程称作类的派生。已有的类称为基类或父类;派生出的新类称为派生类或子类。派生类自动获得基类的成员函数和数据的特性称为继承。 继承可形成一个层次结构,一个类可由其它类通过继承得到,又可作为基类再派生出新的子类。 单继承:只有一个基类的继承 多继承:有两个以上基类的继承 例:考虑某公司雇员信息的处理,设计雇员类Employee如下: class Employee{ char name[9]; //雇员姓名 Date birthday; //雇员生日 char dept[11]; //雇员工作部门 … //雇员的其它信息 }; 对于雇员中的经理,可定义类Manager: class Manager{ Employee emp; //雇员类的对象成员 int level; //经理级别 … //经理的其它信息 }; 这种描述方式并不能向编译器说明一个经理也是一个雇员。Manager类的对象不能与Employee类的对象同等地看待和使用。 表述Manager也是Employee的方法是: class Manager : public Employee{ int level; … //描述经理的其它信息 }; 11.1 继承与派生 派生类定义格式: class 派生类名:继承方式1基类名1, 继承方式2基类名2, ..., 继承方式n基类名n { 派生类新成员说明; }; 单一继承:只有一个基类名;多重继承:多个基类名 继承方式规定了基类成员在派生类中的访问控制方式 ,可为private, public, protected,缺省为private。 11.1 继承与派生 一个派生类的成员可分为两个部分:一部分是从基类继承得到的,构成派生类的基类部分;另一部分是派生类新定义的成员。无论使用何种继承方式,基类部分中的私有成员在派生类中是不能直接访问的,基类部分中的公有成员和保护成员在派生类中可被直接访问,但它们在派生类中的访问控制方式与派生类的继承方式有关。 11.2 访问控制 public派生:基类的公有成员如同是派生类的公有成员,即在派生类的外部也可访问基类的公有成员。基类中的私有成员仍是私有,即在基类外不能访问。 11.2 访问控制 private 派生:基类中的公有成员相当于派生类中的私有成员。即在派生类中可以访问基类的公有成员,而在派生类外,不能访问基类的公有成员。 11.2 访问控制 所有公有、私有派生:在派生类中可以访问和使用派生类中所有成员及基类中的公有成员。 11.2 访问控制 11.3 派生类的构造函数和析构函数 派生类继承了基类的全部数据成员,但是基类的构造函数和析构函数不能被继承,派生类也不能访问基类的私有数据。因此在建立派生类对象时,不仅要调用派生类自己的构造函数对新增数据成员初始化,还要调用基类的构造函数来初始化派生类对象的基类数据成员。 同样,派生类对象释放时,既需要调用派生类的析构函数处理新增数据成员,也需要调用基类的析构函数处理基类数据成员。 11.3 派生类的构造函数和析构函数 调用基类的构造函数的方式在定义派生类的构造函数时说明。 派生类的数据成员包括基类的数据成员与派生类新增的数据成员,新增成员中还可能包括成员对象。因此,产生派生类的对象时,必须对基类数据成员、新增数据成员和成员对象分别进行初始化。 11.3 派生类的构造函数和析构函数 派生类的构造函数的一般格式为: 派生类名::派生类名(总参数表) : 基类名1(实参表1), … , 基类名n(实参表n), 成员对象名1(实参表n+1), …, 成员对象名m(实参表n+m) { 派生类构造函数体 //派生类新增成员的初始化 } 11.3 派生类的构造函数和析构函数 基类成员和新增对象成员的初始化必须在成员初始化列表中进行,新增的其它数据成员的初始化可在成员初始化列表中进行,也可在构造函数体中进行。 当派生类有多个基类时,同一层次的基类其构造函数的调用顺序取决于定义派生类时说明的顺序(自左向右)。每个派生类只负责其直接基类的构造函数调用。 当派生类中有多个成员对象时,成员对象构造函数的调用顺序也取决于在派生类中定义的顺序(自上而下)。 派生类的构造函数负责对基类成员、成员对象及新增的数据成员初始化,它们的执行顺序如下: (1)调用基类构造

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档