C++习题3继承和多态Word格式.docx
- 文档编号:13803558
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:11
- 大小:21.17KB
C++习题3继承和多态Word格式.docx
《C++习题3继承和多态Word格式.docx》由会员分享,可在线阅读,更多相关《C++习题3继承和多态Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
classDerived:
publicBase{
public:
voidfun()
{//在此空格处调用基类的函数fun()
cout<
Derived:
}
A)fun();
B)Base.fun();
C)Base:
fun();
D)Base->
4.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(C)
5.在哪种派生方式中,派生类可以访问基类中的protected成员(B)
A)public和privateB)public、protected和private
C)protected和privateD)仅protected
6.当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)
A)public成员B)private成员C)protected成员D)友元
7.不论派生类以何种方法继承基类,都不能使用基类的(B)
A)public成员B)private成员C)protected成员D)public成员和protected成员
8下面叙述错误的是(S)。
A)基类的protected成员在派生类中仍然是protected的
B)基类的protected成员在public派生类中仍然是protected的
C)基类的protected成员在private派生类中是private的
D)基类的protected成员不能被派生类的对象访问
9.下列说法中错误的是(S)。
A)保护继承时基类中的public成员在派生类中仍是public的
B)公有继承时基类中的private成员在派生类中仍是private的
C)私有继承时基类中的public成员在派生类中是private的
D)保护继承时基类中的public成员在派生类中是protected的
10下面叙述错误的是(C)。
A)派生类可以使用private派生
B)对基类成员的访问必须是无二义性的
C)基类成员的访问能力在派生类中维持不变
D)赋值兼容规则也适用于多继承的组合
11派生类的构造函数的成员初始化列表中,不能包含(C)。
A)基类的构造函数B)派生类中子对象的初始化
C)基类中子对象的初始化D)派生类中一般数据成员的初始化
12.下列虚基类的声明中,正确的是:
(B)
A)classvirtualB:
publicAB)classB:
virtualpublicA
C)classB:
publicAvirtualD)virtualclassB:
publicA
13..实现运行时的多态性采用(D)
A)重载函数B)构造函数C)析构函数D)虚函数
14.若一个类中含有纯虚函数,则该类称为(D)
A)基类B)纯基类C)派生类D)抽象类
15.假设A为抽象类,下列声明(B)是正确的
A)Afun(int);
B)A*p;
C)intfun(A);
D)AObj;
16.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(B)
A)不同B)相同C)相容D)部分相同
17.下面函数原型声明中,(C)声明了fun为普通虚函数
A)voidfun()=0;
B)virtualvoidfun()=0;
C)virtualvoidfun();
D)virtualvoidfun(){};
18.在下面四个选项中,(A)是用来声明虚函数的。
A)virtualB)publicC)usingD)false
19.实现运行时的多态性要使用(D)。
A)重载函数B)构造函数
C)析构函数D)虚函数
20.关于虚函数的描述中,正确的是(D)。
A)虚函数是一个静态成员函数
B)虚函数是一个非成员函数
C)虚函数既可以在函数说明时定义,也可以在函数实现时定义
D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
二、填空题:
1.派生类对基类的继承有三种方式:
_public___、_protected___和__private___。
2.如果类Alpha继承了类Beta,则类Alpha称为__派生__类,类Beta称为__基_类。
3.设置虚基类的目的是为了消除二义性,可通过_virtual标识虚基类。
4.类继承中,缺省的继承方式是__private_________。
5.当用protected继承从基类派生→个类时,基类的public成员成为派生类的_protected__________成员,protected成员成为派生类的_protected________成员。
6.指向基类的对象的指针变量也可以指向__公有派生类的对象。
三、程序题
1.继承的工作方式,完成以下代码。
要求:
(1)处继承方式为共有继承public,
(2)处填写基类的ai,(3)处填写派生类的bi,(4)对象b的数据成员有哪些?
ai,bi
#include<
string.h>
classA{
A(){ai=1;
protected:
intai;
};
classB:
_____A{
B(){bi=2;
voiddisplay(){cout<
____
(2)____<
____(3)____<
endl;
private:
intbi;
intmain()
{
Bb;
b.display();
2.派生类的构造。
派生类的构造总是由基类的初始化开始的。
填写代码,完成基类的初始化。
并且要求屏幕输出效果是:
A(inti){x=i;
cout<
CA:
x<
~A(){cout<
DA"
intx;
publicA{
B():
_A(90)_{y=0;
CB"
~B(){cout<
DB"
inty;
Bb;
3.填写初始化列表,完成以下程序,使得屏幕输出:
A(inti){x=i;
classD{
D(inti){m=i;
m<
intm;
B():
_A(90),d(19)
{y=0;
inty;
Dd;
4.请问以下程序输出什么?
#include<
intx;
B(inti):
A(i+1){y=i;
voidf1(A&
ra)
ra.x<
voidf2(A*pa)
pa->
Bb(3);
f1(b);
f2(&
b);
4答案:
5.请问以下程序输出什么?
A"
B"
voidf(A&
r)
r.display();
f(b);
Aa;
f(a);
5.答案:
6.多态性,虚函数。
请问以下程序输出什么?
virtualvoiddisplay(){cout<
6.答案:
7.请问以下程序输出什么?
classC:
C"
Aa,aa;
Cc,cc,ccc;
A*pa[6]={&
a,&
aa,&
b,&
c,&
cc,&
ccc};
inti=0;
for(i=0;
i<
6;
++i)
pa[i]->
display();
答案:
8.以下程序的屏幕输出是:
。
为何以下程序的屏幕输出中会输出DA呢?
请说明。
DA"
;
DB"
定义类B对象b时,先调用基类A的构造函数,再调用派生类类B的构造函数。
析构时正好相反,先析构B类,再析构A类。
1答案:
(1)public
(2)ai(3)bi(4)ai、bi
2.答案:
A(90)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 习题 继承