- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 继承与多态习题
基本概念与基础知识自测题
填空题
8.1.1 如果类α继承了类β,则类α称为 (1) 类,而类β称为 (2) 类。 (3) 类的对象可作为 (4) 类的对象处理,反过来不行,因为 (5) 。如果强制转换则要注意 (6) 。
答案:(1)基类
(2)派生类
(3)派生类
(4)基类
(5)派生类有一些新成员
(6)只能派生类强制转换为基类
8.1.2 当用public继承从基类派生一个类时,基类的public成员成为派生类的 (1) 成员,protected成员成为派生类的 (2) 成员,对private成员是 (3) 。公有派生可以使其类的 (4) ,所以公有派生是主流。
答案:(1)public成员
(2)protected成员
(3)不可访问
(4)接口不变
8.1.3 利用继承能够实现 (1) 。这种实现缩短了程序开发的时间,VC++中的 (2) 很好地体现了这一点。
答案:(1)代码的复用
(2)MFC编程
8.1.4 一个派生类只有一个直接基类的情况称为 (1) ,而有多个直接基类的情况称为(2) 。继承体现了类的 (3) 概念,这在MFC中得到了很好表现,MFC中只采用了 (4) 。
答案:(1)单继承
(2)多重继承
(3)层次
(4)单继承
8.1.5 C++中多态性包括两种多态性: (1) 和 (2) 。前者是通过 (3) 实现的,而后者是通过 (4) 和 (5) 来实现的。
答案:(1)编译时的
(2)运行时的
(3)函数和运算符的重载
(4)类继承关系
(5)虚函数
8.1.6 在基类中将一个成员函数说明成虚函数后,在其派生类中只要 (1) 、 (2) 和 (3) 完全一样就认为是虚函数,而不必再加关键字 (4) 。如有任何不同,则认为是 (5) 而不是虚函数。除了非成员函数不能作为虚函数外, (6) 、 (7) 和 (8) 也不能作为虚函数。
答案:(1)同虚函数名
(2)同参数表
(3)同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的
(4)virtual
(5)重载
(6)静态成员函数
(7)内联函数
(8)构造函数
8.1.7 纯虚函数定义时在函数参数表后加 (1) ,它表明程序员对函数 (2) ,其本质是将指向函数体的指针定为 (3) 。
答案:(1)=0
(2)不定义
(3)NULL
简答题
构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的?
答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是:
调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。
调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。
派生类的构造函数体中的操作。
什么叫派生类的同名覆盖(override)?
答:如果派生类声明了一个和某个基类成员同名的新成员(当然如是成员函数,参数表也必须一样,否则是重载),派生类中的新成员就屏蔽了基类同名成员,类似函数中的局部变量屏蔽全局变量。称为同名覆盖(override)。
派生类的析构函数中需完成什么任务?是否要编写对基数和成员对象的析构函数的调用?为什么?
答:析构函数的功能是作善后工作,析构函数无返回类型也没有参数,情况比较简单。派生类析构函数定义格式与非派生类无任何差异,不要编写对基数和成员对象的析构函数的调用,只要在函数体内把派生类新增一般成员处理好就可以了,因为对新增的成员对象和基类的善后工作,系统会自己调用成员对象和基类的析构函数来完成。
为什么要使用虚基类?怎样定义虚基类?用一个实例来解释虚基类在其派生类中的存储方式。
答:在多重继承是有可能出现同一基类的两个拷贝,为避免这种情况,可使用虚基类。虚基类(virtual base class)定义方式如下:
class 派生类名:virtual 访问限定符 基类类名{...};
class 派生类名:访问限定符 virtual 基类类名{...};
virtual 关键字只对紧随其后的基类名起作用。
如下派生:
存储关系如(b),在职研究生类有两个Person拷贝。采用虚基类后存储关系如下:
在职研究生类只有一个Person拷贝。
简单叙述派生类与基类的赋值兼容规则。
答:凡是基类所能解决的问题,公有派生类都可以解决。在任何需要基类对象的地方都可以用公有派生类的对象来代替,这条规则称赋值兼容规则。它包括以下情况:
派生类的对象可以赋值给基类的对象,这时是把派生类对象中从对应基类中继承来的成员赋值给基类对象。反过来不行,因为派生类的新成员无值可赋。
可以将一个派生类的对象的地址赋给其基类的指针变量,但只能通过这个指针访问派生
您可能关注的文档
- Cisco路由器交换机配置敕令详解.doc
- CISPCISM测验及注册申请表模板.doc
- CIS筹划全程第四部分.doc
- CISP知识系统大纲20正式版.doc
- cj 某某质量管理工程咨询有限公司5S举动培训教材.doc
- CK6163型数控车床设计开题告诉.doc
- ck6140数控车床毕业设计开题告诉.doc
- Ckutnbe教师考试新课程实际试题及答案.doc
- Ck白蚁防治施工工程条约.doc
- CL4000余氯分析仪仿单PH.doc
- PDM软件:Siemens Teamcenter二次开发_(17).Teamcenter最佳实践与案例分析.docx
- SCADA软件:GE Proficy二次开发_(4).Proficy开发环境搭建.docx
- 智能电表软件:Landis+Gyr智能电表二次开发_(13).系统集成与测试.docx
- 智能电表软件:Elster智能电表二次开发_(8).Elster智能电表二次开发环境搭建.docx
- PDM软件:Siemens Teamcenter二次开发_(11).TeamcenterAPI与编程基础.docx
- SCADA软件:GE Proficy二次开发_(7).报警与事件管理.docx
- 智能电表软件:Echelon智能电表二次开发_(11).智能电表行业标准与法规.docx
- 智能电表软件:Itron智能电表二次开发_(6).用户界面定制与开发.docx
- 智能电表软件:Elster智能电表二次开发_(9).Elster智能电表二次开发工具使用.docx
- PDM软件:PTC Windchill二次开发_(21).Windchill最佳实践案例分析.docx
文档评论(0)