-
继承与多态习题
一
.
基本概念与基础知识自测题
8.1
填空题
8.1.1
如果类
α
继
承了类
β
,则类
α
称为
(
1
)
p>
类,而类
β
称为
(
2
)
类。
(
3
)
类
的对象可作为
(
4
)
类的对象处理,反过来不行,因为
(
5
)
。如果强制转换则
要注意
(
6
)
。
答案:
(
1
)基类
(
2
)派生类
(
3
)派生类
(
4
)基类
(
5
)派生类有一些新成员
(
6
)只能派生类强制
转换为基类
8.1.2
当用
public
继承从基类派生一个类时,<
/p>
基类的
public
成员成为派生类的<
/p>
(
1
)
p>
成员,
protected
成员成为派生类
的
(
2
)
成员,对
private
成员是
(
3
)
。公有派生可
以使其类的
(
4
)
,所以公有派生是主流。
答案:
(
1
)
public
成员
(
2
)
protected
成员
(
3
)不可访问
(
4
)接口不变
8.1.3
利用继承能够实现
(
1
)
p>
。这种实现缩短了程序开发的时间,
VC++
中的
(
2
)
很
好地体现了这一点。
答案:
(
1
)代码的复用<
/p>
(
2
)
MFC
编程
8.1.4
一个派生类只有一个直接基类的情况称为
(
1
)
,而有多个直接基类的情况称为
(<
/p>
2
)
。继承体现了类的
(
3
)
p>
概念,这在
MFC
中得到了很好表现,
p>
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
)同虚函数名
<
/p>
(
2
)同参数表
1
(
3<
/p>
)同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的
(
4
)
< br>virtual
(
5
)重载
(
6
)静态成员函数
< br>
(
7
)内联函数
(
8
)构造函数
8.1.7
纯虚函数定义时在函数参数表后加
(
1
)
,它表明程序员对函数
(
2
)
,其本质
是将指向函数体的指针定为
(
3
)
。
答案:
(
1
)
=0
(
2
)不定义
(
3
)
NUL
L
8.2
简答题
8.2.1
构造函数和析构函数可以
继承吗?派生类构造函数各部分的执行次序是怎样的?
答:构
造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是:
1.
调用基类构造函数,按它们在派
生类声明的先后顺序,依次调用。
2.
调用新增成员对象的构造函数,
按它们在类定义中声明的先后顺序,依次调用。
3.
派生类的构造函数体中的操作。
8.2.2
什么叫派生类的同名覆盖
(
override
)
?
答:
如果派生类声明了一个和某个基类成员同名的新成员
< br>(当然如是成员函数,
参数表也必
须一样,否则是重载)
,派生类中的新成员就屏蔽了基类同名成员,类似函数中的局部变量
屏蔽全局变量。称为同名覆盖(
override
)
。
8.2.3
<
/p>
派生类的析构函数中需完成什么任务?是否要编写对基数和成员对象的析构函数的
调用?为什么?
答:析构函数的功能是作善后
工作,
析构函数无返回类型也没有参数,
情况比较简单。
派生
类析构函数定义格式与非派生类无任何差异,不要编写对基数和成
员对象的析构函数的调
用,
只要在函数体内把派生类新增一般成
员处理好就可以了,
因为对新增的成员对象和基类
的善后工作,
系统会自己调用成员对象和基类的析构函数来完成。
8.2.4
为什么要使用虚基类?怎
样定义虚基类?用一个实例来解释虚基类在其派生类中的
存储方式。
答:在多重继承是有可能出现同一基类的两个拷贝,为避免这种情况,可使用虚基
类。
虚基类(
virtual base
class
)定义方式如下:
class
派生类名
:
virtual
访问限定符
基类类名
{...};
class
派生类名
:
访问限定符
virtual
基类类名
{...};
virtual
关键字只对紧随其后的基类名起作用。
如下派生:
存储关系如
(b)
,在职研究生类有两个
Person
拷贝。采用虚基类后存储关系如下:
Person
Person
在职研
究生类只有一个
Person
拷贝。
Student
Student
新成员
8.2.5
简单叙述派生类与基类的赋值兼容规则。
GStudent
答:
凡是基类所能
解决的问题,
公有
派生类都可以解决。
在任何需要基类对象的地方都可以
GStudent
新成员
p>
用公有派生类的对象来代替,这条规则称
赋值兼容规则
。它包括以下情况:
EGStudent
Person
Person
1
.
派生类
的对象可以赋值给基类的对象,
这时是把派生类对象中从对应基类中继承来的成
Employe
员赋值给基类对象。反过来不行,因为派生类的新成员无
值可赋。
Employee
新成员
2
.
可以将
一个派生类的对象的地址赋给其基类的指针变量,
但只能通过这个指针访问派生
Person
成员
EGStudent
新成员
2
采用虚基类后在职研究生类储存图
-
-
-
-
-
-
-
-
-
上一篇:商务英语专业社会调查报告
下一篇:2020最新英语大专的简历范文