Ch08Key继与多态1.docVIP

  • 2
  • 0
  • 约2.32万字
  • 约 5页
  • 2016-10-09 发布于贵州
  • 举报
Ch08Key继与多态1

第八章 继承与多态习题 基本概念与基础知识自测题 填空题 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 MFC中从根类 (1) 层层派生出绝大多数MFC中的类,其中命令相关类 (2) 派生出来的最重要的类组成了 (3) 。 答案:(1)CObject (2)CCmdTarget (3)应用程序结构(Application Architecture)的集合 8.1.6 C++中多态性包括两种多态性: (1) 和 (2) 。前者是通过 (3) 实现的,而后者是通过 (4) 和 (5) 来实现的。 答案:(1)编译时的 (2)运行时的 (3)函数和运算符的重载 (4)类继承关系 (5)虚函数 8.1.7 在基类中将一个成员函数说明成虚函数后,在其派生类中只要 (1) 、 (2) 和 (3) 完全一样就认为是虚函数,而不必再加关键字 (4) 。如有任何不同,则认为是 (5) 而不是虚函数。除了非成员函数不能作为虚函数外, (6) 、 (7) 和 (8) 也不能作为虚函数。 答案:(1)同虚函数名 (2)同参数表 (3)同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的 (4)virtual (5)重载 (6)静态成员函数 (7)内联函数 (8)构造函数 8.1.8 纯虚函数定义时在函数参数表后加 (1) ,它表明程序员对函数 (2) ,其本质是将指向函数体的指针定为 (3) 。 答案:(1)=0 (2)不定义 (3)NULL 8.1.9 MFC根据消息处理函数的不同,把消息分为 (1) 、 (2) 和 (3) 。其中 (4) 是编制应用程序时应用最多的。 答案:(1)窗口消息 (2)控制通知消息 (3)命令消息 (4)命令消息 8.1.10 消息映射的搜索路线除按 (1) 直线查找,因 (2) 同样有消息处理能力,因此消息的搜索路线是迂回曲折的。 答案:(1)按派生关系 (2)文档/视结构(document/view) 简答题 构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的? 答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是: 调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。 调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。 派生类的构造函数体中的操作。 什么叫派生类的同名覆盖(override)? 答:如果派生类声明了一个和某个基类成员同名的新成员(当然如是成员函数,参数表也必须一样,否则是重载),派生类中的新成员就屏蔽了基类同名成员,类似函数中的局部变量屏蔽全局变量。称为同名覆盖(override)。 派生类的析构函数中需完成什么任务?是否要编写对基数和成员对象的析构函数的调用?为什么? 答:析构函数的功能是作善后工作,析构函数无返回类型也没有参数,情况比较简单。派生类析构函数定义格式与非派生类无任何差异,不要编写对基数和成员对象的析构函数的调用,只要在函数体内把派生类新增一般成员处理好就可以了,因为对新增的成员对象和基类的善后工作,系统会自己调用成员对象和基类的析构函数来完成。 为什么要使用虚基类?怎样定义虚基类?用一个实例来解释虚基类在其派生类中的存储方式。 答:在多重继承是有可能出现同一基类的两个拷贝,为避免这种情况,可使用虚基类。虚基类(virtual base clas

文档评论(0)

1亿VIP精品文档

相关文档