c++继的承与派生.ppt

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

* * * * * * * * * * * 特殊的初始化 通常,每个类的构造函数只调用直接基类构造函数完成初始化 在应用于虚基类的时候,如果使用常规规则…. 多次初始化虚基类 虚基类及其派生类构造函数 在整个继承结构中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中给出对虚基类的构造函数的调用。 (如果未列出,则表示调用该虚基类的缺省构造函数。) 在建立对象时指定的类称为最远派生类,它的构造函数调用虚基类的构造函数,该派生类的其它基类对虚基类构造函数的调用被忽略。 A B1 B2 C 编程序实现研究生的数据操作。设计一个Person类,包括人员姓名和性别等数据成员以及相关的成员函数,从它派生出教师类Teacher和学生类Student,再从这两个类派生出在职研究生类Graduate。 类Person 类Teacher 类Student 类Graduate 例8.7.2 * 声明虚基类的派生类构造函数调用规则: 1. 虚基类的构造函数在非虚基类之前调用; 2. 若同一层次中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用; 3. 若虚基类由非虚基类派生而来,则仍然先调用基类的构造函数,再调用派生类的构造函数。 虚 基 类 #include iostream.h class base1{ public: base1(){coutclass base1endl;}}; class base2{ public: base2(){coutclass base2endl;}}; class level1:public base2,virtual public base1 { public: level1(){coutclass level1endl;}}; class level2:virtual public base1,virtual public base2 { public: level2(){coutclass level2endl;}}; class toplevel:public level1,virtual public level2 { public: toplevel(){coutclass toplevelendl;}}; void main( ) {toplevel obj;} 复杂的例子 class base1 class base2 class level2 class base2 class level1 class toplevel * * * * * * * * * * * * * * * * * * * * * * * * 单一继承时的构造函数 派生类名::派生类名(基类所需的形参,本类成员所需的形参):基类名(参数表) { 本类成员初始化赋值语句; }; 派生类的构造函数 * 简单的派生类只有一个基类,只有一级派生,且派生类的数据成员不包含其它类的对象; 建立一个派生类对象时,构造函数的执行顺序是: (1) 调用基类的构造函数; (2) 执行派生类的构造函数体中的内容。 简单派生类的构造函数 派生类的构造函数 * 一个简单派生类的构造函数例子 例gf3 简单派生类的构造函数。 派生类构造函数名Student1后面括号内的参数表中包括参数类型和参数名(如int n),而基类构造函数名后括号内的参数表只有参数名而不包括参数类型(即n, nam),其实这不是定义基类的构造函数,而是调用基类的构造函数,参数(n,nam)是实参; 建立对象时指定的3个实参,顺序传递给基类和派生类的构造函数。 派生类的构造函数 * 如果一个类的数据成员包含其它类的对象,则该对象就称为子对象(sub-object); 子对象的初始化, 是在建立派生类对象时通过调用派生类的构造函数实现; 有子对象的派生类的构造函数的语法形式: 派生类名::派生类名(总参数表):基类名(参数表), 子对象名(参数表) { // 派生类中新增成员的初始化; } 有子对象的派生类的构造函数 派生类的构造函数 * 参数总表:包括初始化基类数据、新增对象数据及新增一般成员所需的全部数据; 基类名、子对象名之间的次序可以任意,但在生成派生类时,系统会使用这里列出的所有参数,调用基类和子对象的构造函数; 建立派生类对象时,构造函数的执行顺序是: (1) 调用基类的构造函数; (2) 调用子对象的构造函数; (3) 执行派生类的构造函数体中的内容。 有子对象的派生类的构造函数 派生类的构造函数 * 含子对象的派生类构造函数例子

文档评论(0)

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

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

1亿VIP精品文档

相关文档