第七章 继承及派生.docVIP

  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文档。上传文档
查看更多
第七章 继承和派生 一、 基类和派生类 1. 在C++中,可以从一个类派生出另一个类,前者称为基类或父类,后者称为派生类或子类。一个派生类可以从一个或多个基类派生。从一个基类派生的继承称单继承,从多个基类派生的继承称多继承。 2. 单继承定义格式: class 派生类:继承方式 基类 { 派生类新定义成员; }; 其中,“派生类”是从“基类”按指定的“继承关系”派生出的、新定义的一个类的名字。“继承方式”有三种:(1)public 公有继承 (2)private 私有继承 (3) protected 保护继承 3. 多继承定义格式: class 派生类:继承方式1 基类1,继承方式2 基类2,… { 派生类新定义成员; }; 4. 公有继承:当派生类的继承方式是public继承时,基类的public和protected成员的访问属性在派生类中保持不变,而基类的private成员不可访问,即基类的public和protected成员分别作为派生类的public和protected成员,派生类的其他成员可以直接访问它们。 例1: class B{ private: int x; protected: int y; public: int z;… }; class A:public B{ private: int a; protected: int b; public: int c;…}; A a; (1) 类B是基类,有3个数据成员x、y、z,分别是private、protected、public属性。类A是 派生类,有3个数据成员a、b、c,分别是private、protected、public属性。由于类A是 从类B公有派生的,类B中的public、protected属性的成员可继承到类A中来,且保持原 来的属性。故类A中有5个数据成员,即a、b、c、y。 (2)… }; class A:protected B{ private: int a; protected: int b; public: int c;…}; A a; 类B是基类,有3个数据成员x、y、z,分别是private、protected、public属性。类A是 从类B保护派生的,类B中的protected、public属性的成员可继承到类A中,均变成 protected属性。故类A中有5个数据成员,即a、b、c、y、z。可以通过类A的对象a直接 访问public成员,即c,不能访问a、b、y、z数据成员。 6. 私有继承:当派生类的继承方式是private继承时,基类的public和protected成员可以被继承到派生类中,但访问属性都变成private,而基类的private成员不可访问,即基类的public和protected成员都作为派生类的private成员,派生类的其他成员可以直接访问它们。 例3: class B{ private: int x; protected: int y; public: int z;… }; class A:private B{ private: int a; protected: int b; public: int c;…}; A a; 类B是基类,有3个数据成员x、y、z,分别是private、protected、public属性。类A是 从类B私有派生的,类B中的protected、public属性的成员可继承到类A中,均变成 private属性。故类A中有5个数据成员,即a、b、c、y、z。可以通过类A的对象a直接 访问public成员,即c,不能访问a、b、y、z数据成员。 二、 单继承 1. 在单继承中,每个类可以有多个派生类,但是每个派生类只能有一个基类,从而形成树形结构。 2. 构造函数不能被继承,故派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。在定义派生类的构造函数时,除了要对自己的数据成员进行初始化,还要调用基类构造函数使基类的数据成员得以初始化。若派生类中还有子对象,应包含对子对象初始化的构造函数。 3. 派生类构造函数一般格式: 派生类名(派生类构造函数总参数表):基类构造函数(参数表1), 子对象名(参数表2){ 派生类中数据成员初始化; }; 4. 派生类构造函数调用顺序:(1)基类的构造函数;(2)子对象类的构造函数(有的话);(3)”A Constructor”endl; } }

文档评论(0)

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

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

1亿VIP精品文档

相关文档