单元继承与派生.pptVIP

单元继承与派生.ppt

此“司法”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单元继承与派生

在整个继承关系中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中 列出对虚基类的初始化 虚基类及其派生类构造函数 建立对象时所指定的类称为最(远)派生类。 虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。 在整个继承结构中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中给出对虚基类的构造函数的调用。如果未列出,则表示调用该虚基类的默认构造函数。 在建立对象时,只有最远派生类的构造函数调用虚基类的构造函数,该派生类的其他基类对虚基类构造函数的调用被忽略。 类型兼容规则 类型兼容规则是指在需要基类对象的地方使用公有派生类对象来替代。 类型兼容规则中所指的替代包括以下情况: (设b为基类B的对象,d为派生类D的对象) 派生类的对象可以赋值给基类对象. b=d; 派生类的对象可以初始化基类的引用. B b=d; 派生类对象的地址可以赋给指向基类的指针. B *pb=d; 注意:只能访问派生类对象从基类继承下来的成员,对于派生类的新增成员必须进行强行转换. 例 类型兼容规则 class B0{ public: void display(){coutB0::dispaly()endl;} }; class B1:public B0{ public: void display(){coutB1::diaplay()endl;} }; class D:public B1{ public: void display(){cout“D::diaplay()endl;} }; void fun(B0 *ptr) //普通函数,参数指向基类对象指针 { ptr-display(); } //“对象指针-成员名” B0 +display( ):void B1 +display( ):void D1 +display( ):void void main() { B0 b0; //声明间接基类B0对象和指针 B1 b1; //声明直接基类B1对象 D d; //声明派生类D1对象 fun(b0); //用B0对象的指针调用fun函数 fun(b1); //用B1对象的指针调用fun函数 fun(d); //用D对象的指针调用fun函数 } 结果:只能调用基类函数 B0::dispaly() B0::dispaly() B0::dispaly() 本章小结 派生新类过程有三个步骤:吸收基类成员;改造基类成员;添加新成员。 对基类成员的改造包括二个方面:对基类成员的访问控制,它由派生类声明时的继承方式(公有、私有、保护)来控制;二是对基类成员的覆盖,对基类功能进行改造。 派生类新成员加入是继承与派生机制的核心。 派生过程中,基类的构造函数和析构函数不能被继承,一些特殊的初始化和扫尾工作需要加入新的构造和析构函数。 C++只能访问一个能够唯一标识的可见成员,可用同名覆盖原则、作用域分辨符和虚基类等方法。 类型兼容原则。 基类的自身成员可以对基类中任何一个其他成员进行访问,但是通过基类的对象只能访问该类的公有成员。 基类的构造函数调用顺序是按照定义派生类时基类的排列顺序来进行, 而内嵌成员对象构造函数的调用则是按照对象在派生类中声明语句 出现的先后顺序来进行。构造函数的执行顺序和派生类构造函数中列出的名称顺序毫无关系。 第七章 继承与派生 继承与派生基本概念 派生类声明 派生类的生成过程 继承方式 派生类的构造和析构函数 派生类成员的标识与访问 赋值兼容性规则 人 小学生 中学生 大学生 研究生 工人 学生 教师 农民 继承 继承将客观世界中一般和特殊的关系模型化为层次结构,提供了创建新类的一种方法,它的本质特征是行为共享; 助教 讲师 教授 研究生 学习 四则运算 学习 代数几何 学习 高等数学 姓名、身高、体重、性别 …… 继承与派生的基本概念 继承:从先辈处得到属性和行为特征。 类的继承:新类从已有类那里得到已有的特性。 继承提供了创建新类的一种方法,它的本质特征是行为共享; 派生:从已有类产生新类的过程就是类的派生。 基类或父类:已存在的用来派生新类的类 派生类或子类:由已存在的类派生出的新类 单继承:从一个基类派生的继承 多继承:从多个基类派生的继承; 派生类声明 单继承: class 派生类名:继承方式 基类名   {   派生类成员声明;   }; 多继承: class 派生类名:继承方式 基类名1,继承方式 基类名

文档评论(0)

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

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

1亿VIP精品文档

相关文档