首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > C加加 > 复习资料 > 正文

计算机等级考试二级C++各章内容摘要:第7章

来源:考试吧Exam8.com) 2007-6-11 15:35:20 考试吧:中国教育培训第一门户 模拟考场

  2、派生类的析构函数与构造函数相同,派生类的析构函数在执行过程中也要对基类和成员对象进行操作,但它的执行过程与构造函数严格相反,即:(1)对派生类新增普通成员进行清理。(2)调用成员对象析构函数,对派生类新增的成员对象进行清理。(3)调用基类析构函数,对基类进行清理。派生类析构函数的定义与基类无关,与没有继承关系的类中的析构函数的定义完全相同。它只负责对新增普通成员的清理工作,系统会自己调用基类及成员对象的析构函数进行相应的清理工作。

   【考点四】 多继承与虚基类
  1、多继承中的二义性问题在派生类中对基类成员的访问应该是唯一的。但是,在多继承情况下,可能造成对基类中某个成员的访问出现了不唯一的情况,这时就称对基类成员的访问产生了二义性。要解决这一问题,有两种方法:(1)通过作用域运算符(::)明确指出访问的是基类Basel的fun()函数,还是基类Base2的fun()函数。
     使用作用域运算符进行限定的一般格式是:<对象名>.<基类名>::<成员名>
//数据成员<对象名>.<基类名>::<成员名>(参数表>) 
//成员函数(2)在类中定义同名成员对于在不同的作用域中声明的标识符的可见性原则是:如果存在两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符,那么它在内层可见;如果内层声明了同名标识符,则外层标识符在内层不可见,这时称内层变量覆盖了外层同名变量。在类的继承层次结构中,基类的成员和派生类新增的成员都具有类作用域,二者的作用范围不同,是相互包含的两个层,派生类在内层。这时,如果派生类定义了一个和某个基类成员同名的新成员(如果是成员函数,则参数表也要相同,参数不同的情况属于重载),派生的新成员就覆盖了外层同名成员,直接使用成员名只能访问到派生类的成员。

  2、虚基类的定义当一个派生类从多个基类派生,而这些基类又有一个共同的基类,当对该基类中说明的成员进行访问时,可能出现二义性。虚基类就是为了解决这种二义性问题提出来的。在产生二义性问题的第二种情况中,产生二义性的最主要的原因是基类Base在派生类Derived2中产生了两个基类子对象,从而导致了对基类Base的成员data访问的不唯一性。要解决这个问题,只需使这个公共基类Base在派生类中只产生一个子对象即可。虚基类就可以完成这个任务。虚基类的说明格式如下:class<类名>:virtual<继承方式><基类名> 其中,关键字virtual与继承方式的位置无关,但必须位于虚基类名之前,且virtual只对紧随其后的基类名起作用。

  3、虚基类的构造函数使用虚基类解决二义性问题的关键是在派生类中只产生一个虚基类子对象。为初始化基类子对象,派生类的构造函数要调用基类的构造函数。对于虚基类,由于派生类的对象中只有一个虚基类子对象,所以,在建立派生类的一个对象时,为保证虚基类子对象只被初始化一次,这个虚基类构造函数必须只被调用一次。虽然继承结构的层次可能很深,但要建立的对象所属的类只是这个继承结构中间的某个类,因此将在建立对象时所指定的类称为最派生类。虚基类子对象由最派生类的构造函数通过调用虚基类的构造函数进行初始化。所以,最派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用;如果未列出,则表示使用该虚基类的缺省构造函数。由于最派生类总是相对的,因此,从虚基类直接或间接派生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但只有用于建立对象的最派生类的构造函数才调用虚基类的构造函数,此时最派生类的所有基类中列出的对虚基类的构造函数的调用在执行过程中都被忽略,从而保证对虚基类子对象只初始化一次。当在一个成员初始化列表中同时出现对虚基类和非虚基类构造函数的调用时,虚基类的构造函数先于非虚基类的构造函数执行。 

  【考点五】 子类型关系公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。子类型关系使得在需要基类对象的任何地方都可以使用公有派生类的对象来替代,从而可以使用相同的函数统一处理基类对象和公有派生类对象(形参为基类对象时,实参可以是派生类对象),而不必为每一个类设计单独的处理程序,大大提高了程序的效率。它是实现多态性的重要基础之一。子类型关系的定义如下:有一个特定的类型S,当且仅当它提供了类型T的行为时,称类型S是类型T的子类型。公有派生类的对象可以赋值给基类的对象。实际上不仅如此,具有子类型关系的基类和派生类的对象之间满足如下赋值兼容规则:(1)公有派生类的对象可以赋值给基类的对象,即用公有派生类对象中从基类继承来的成员,逐个赋值给基类对象的成员。(2)公有派生类的对象可以初始化基类的引用。(3)公有派生类的对象的地址可以赋值给指向基类的指针。 

希望与更多计算机等级考试的网友交流,请进入计算机等级考试论坛

更多信息请访问:考试吧计算机等级考试栏目

上一页  1 2 3 4 下一页
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。