c++复习资料3Word下载.docx
- 文档编号:22913235
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:45
- 大小:29.39KB
c++复习资料3Word下载.docx
《c++复习资料3Word下载.docx》由会员分享,可在线阅读,更多相关《c++复习资料3Word下载.docx(45页珍藏版)》请在冰豆网上搜索。
12.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(a)。
A.intAA:
:
a()B.intAA:
a()
C.AA:
a()D.AA:
inta()
13.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(a)。
A.aB.AA:
aC.a()D.AA:
14.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。
A.inB.inlineC.inLineD.InLiner
15.在多文件结构的程序中,通常把类的定义单独存放于(d)中。
A.主文件B.实现文件C.库文件D.头文件
16.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于(b)中。
17.在多文件结构的程序中,通常把含有main()函数的文件称为(a)。
A.主文件B.实现文件C.程序文件D.头文件
18.一个C++程序文件的扩展名为(c)。
A..hB..cC..cppD..cp
19.在C++程序中使用的cin标识符是系统类库中定义的(a)类中的一个对象。
A.istreamB.ostreamC.iostreamD.fstream
20.在C++程序中使用的cout标识符是系统类库中定义的(b)类中的一个对象。
21.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(d)。
A.intB.charC.AAD.AA*
22.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(c)。
A.abcB.*thisC.thisD.this&
23.假定AA是一个类,“AA&
abc();
”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值(a)。
A.已经被改变B.可能被改变
C.不变D.不受函数调用的影响
24.假定AA是一个类,“AA*abc()const;
”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值(c)。
C.不变D.受到函数调用的影响
25.类中定义的成员默认为(b)访问属性。
A.publicB.privateC.protectedD.friend
26.结构中定义的成员默认为(a)访问属性。
27.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为(c)。
A.nB.n+1C.n-1D.n-2
28.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为(c)。
A.length+1B.first+length
C.(first+length-1)%MSD.(first+length)%MS
29.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为()。
30.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为(b)。
A.first+1B.(first+1)%MS
C.(first-1)%MSD.(first+length)%MS
31.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给(d)。
A.elemHeadB.elemTail
C.elemHead->
next和elemHeadD.elemTail->
next和elemTail
32.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给(c)。
C.elemHead和elemTailD.elemHead或elemTail
33.队列具有(a)的操作特性。
A.先进先出B.先进后出C.进出无序D.进出任意
34.栈具有(b)的操作特性。
35.对于一个类的构造函数,其函数名与类名(a)。
A.完全相同B.基本相同C.不相同D.无关系
36.对于一个类的析构函数,其函数名与类名(c)。
A.完全相同B.完全不同C.只相差一个字符D.无关系
37.类的构造函数是在定义该类的一个(c)时被自动调用执行的。
A.成员函数B.数据成员C.对象D.友元函数
38.类的析构函数是一个对象被(b)时自动调用的。
A.建立B.撤消C.赋值D.引用
39.一个类的构造函数通常被定义为该类的(a)成员。
A.公用B.保护C.私有D.友元
40.一个类的析构函数通常被定义为该类的(c)成员。
A.私有B.保护C.公用D.友元
41.假定AB为一个类,则执行“ABx;
”语句时将自动调用该类的(b)。
A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数
42.假定AB为一个类,则执行“ABx(a,5);
”语句时将自动调用该类的(a)。
43.假定AB为一个类,则执行“AB*s=newAB(a,5);
”语句时得到的一个动态对象为___d____。
A.sB.s->
aC.s.aD.*s
44.假定AB为一个类,则执行“ABr1=r2;
”语句时将自动调用该类的(d)。
A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数
45.若需要使类中的一个指针成员指向一块动态存储空间,则通常在(b)函数中完成。
A.析构B.构造C.任一成员D.友元
46.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(a)个整数。
A.nB.n+1C.n-1D.1
47.假定一个类的构造函数为“A(intaa,intbb){a=aa;
b=aa*bb;
}”,则执行“Ax(4,5);
”语句后,x.a和x.b的值分别为(c)。
A.4和5B.5和4C.4和20D.20和5
48.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;
b=bb;
}”,则执行“Ax(4);
”语句后,x.a和x.b的值分别为(d)。
A.1和0B.1和4C.4和1D.4和0
49.假定AB为一个类,则(b)为该类的拷贝构造函数的原型说明。
A.AB(ABx);
B.AB(AB&
x);
C.voidAB(AB&
D.AB(intx);
50.假定一个类的构造函数为“B(intax,intbx):
a(ax),b(bx){}”,执行“Bx(1,2),y(3,4);
x=y;
”语句序列后x.a的值为(c)。
A.1B.2C.3D.4
二、填空
1.假定a是一个一维指针数组,则a+i所指对象的地址比a大__4*i____字节。
2.假定a是一个一维数组,则a[i]的指针访问方式为___*(a+i)_____。
3.假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为____________。
4.一个数组的数组名实际上是指向该数组__第一个______元素的指针,并且在任何时候都不允许___修改_____它。
5.假定指向一维数组b中元素b[4]的指针为p,则p+3所指向的元素为_b[7]______,p-2所指向的元素为___b[2]_____。
6.若要定义整型指针p并初始指向x,则所使用的定义语句为________。
7.若p指向x,则________与x的表示是等价的。
8.在一个二维数组inta[m][n]中,包含的一维元素a[i]的类型为________,访问a[i]时返回值的类型为________。
9.假定一个二维数组为c[5][8],则c[3]的值为二维元素________的地址,c[3]+2的值为二维元素________的地址。
10.假定p为指向二维数组intd[4][6]的指针,则p的类型为________。
11.假定a是一个二维数组,则a[i][j]的指针访问方式为____________。
12.若要把y定义为整型变量x的引用,则所使用的定义语句为________。
13.若y是x的引用,则对y的操作就是对_______的操作。
14.若y是x的引用,则&
y和&
x的值________,即为变量________的地址。
15.执行intp=newint操作得到的一个动态分配的整型对象为________。
16.执行int*p=newint[10]操作,使p指向动态分配的数组中下标为0的元素,该元素可表示为_______或________。
17.执行char*p=newchar(’a’)操作后,p所指向的数据对象的值为________。
18.执行newchar[m][n]操作时的返回值的类型为________。
19.执行________操作将释放由p所指向的动态分配的数据空间。
20.执行________操作将释放由p所指向的动态分配的数组空间。
21.NULL是一个符号常量,通常作为空指针值,它的具体值为________。
22.变量v定义为“doublev=23.4;
”,要使指针pv指向v,则定义pv的语句为______________。
23.已知语句“cout<
<
p;
”的输出是“Hello!
”,则语句“cout<
*p;
”输出的是__________。
24.已知语句“cout<
s;
”的输出是“apple”,则执行语句“cout<
s+2;
”的输出结果为__________。
25.指针变量pv和pc定义为“void*pv=”Hello,word!
”;
char*pc;
”,要将pv值赋给pc,则正确的赋值语句是_______________。
26.数组b定义为“intb[20][100];
”,要使p[j][k]与b[j][k]等效,则指针p应定义为__________________。
27.与结构成员访问表达式p->
name等价的表达式是____________。
28.与结构成员访问表达式(*fp).score等价的表达式是____________。
29.已知变量a定义为“inta=5;
”,要使ra成为a的引用,则ra应定义为____________。
30.已知有定义“intx,a[]={5,7,9},*pa=a;
”,在执行“x=++*pa;
”语句后,x的值是________。
31.已知有定义“intx,a[]={6,10,12},*pa=a;
”,在执行“x=*++pa;
”语句后,*pa的值是________。
32.已知有定义“intx,a[]={15,17,19},*pa=a;
”,在执行“x=*pa++;
”后,*pa的值是________。
33.以面向对象方法构造的系统,其基本单位是__________。
34.每个对象都是所属类的一个__________。
35.对象将其大部分实现细节隐藏起来,这种机制称为__________。
36.基类和派生类的关系称为__________。
37.复杂对象可以由简单对象构成,这种现象称为__________。
38.对象是对问题域中客观事物的________,它是一组属性和在这些属性上操作的__________。
39.特殊类的对象拥有其一般类的全部属性与操作,称特殊类________了一般类。
40.如果一个派生类的基类不止一个,则这种继承称为____________。
41.如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。
42.C++支持两种多态性:
_________时的多态性和__________时的多态性。
43.在C++中,编译时的多态性是通过__________实现的,而运行时的多态性则是通过__________实现的。
44.面向对象软件开发的生命周期分为三个阶段,即分析、__________和__________。
45.面向对象的分析包括__________分析和__________分析两步。
46.类定义中,既包含数据成员,也包含________成员。
47.类中的数据成员的访问属性通常被指明为________。
48.类中的供外部调用定义的函数成员,其访问属性通常被定义为________。
49.对于类中定义的任何成员,其隐含访问权限为________。
50.对于结构中定义的任何成员,其隐含访问权限为________。
51.为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为________。
52.若在类的定义体中给出了一个成员函数的完整定义,则该函数属于________函数。
53.若在类的定义体中只给出了一个成员函数的原型,而在类外给出完整定义时,则其函数名前必须加上________和两个冒号分隔符。
54.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和________分隔符。
55.若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。
56.把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的____________。
57.假定AA是一个类,“AA*abc();
”是该类中一个成员函数的原型,则在类外定义时的函数头为__________________。
58.成员函数的参数表在类作用域中,成员函数的返回值类型________类作用域中。
59.为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。
60.若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上________关键字。
61.在每个成员函数中,隐含的第一个参数的参数名为________。
62.数组a定义为“inta[100];
”,要使p[j]与a[j]等效,则指针p应定义为______________。
三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面
1.已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:
其重载的运算符[]要对下标是否越界进行检查。
classARRAY{
int*v;
//指向存放数组数据的空间
ints;
//数组大小
public:
ARRAY(inta[],intn);
~ARRAY(){delete[]v;
}
intsize(){returns;
}
int&
operator[](intn);
};
___
(1)___operator[](intn)//[]的运算符成员函数定义
{
if(n<
0||___
(2)___){cerr<
"
下标越界!
;
exit
(1);
return___(3)___;
(1)
(2)(3)
2.已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。
classARRAY{
___
(1)___ARRAY(inta[],intn)
=0){v=NULL;
s=0;
return;
s=n;
v=___
(2)___;
for(inti=0;
i<
n;
i++)___(3)___;
3.下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:
(a)用()而不是[]进行下标访问,
(2)下标从1而不是从0开始,(c)要对下标是否越界进行检查。
operator()(intn);
___
(1)___operator()(intn)
{//()的运算符函数定义
if(___
(2)___){cerr<
4.已知一个类的定义如下:
#include<
iostream.h>
classAA{
inta[10];
intn;
voidSetA(intaa[],intnn);
//用数组aa初始化数据成员a,
//用nn初始化数据成员n
intMaxA();
//从数组a中前n个元素中查找最大值
voidSortA();
//采用选择排序的方法对数组a中前n个元素
//进行从小到大排序
voidInsertA();
//采用插入排序的方法对数组a中前n个元素进行从小到大排序
voidPrintA();
//依次输出数组a中的前n个元素
该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int____
(1)_____
intx=a[0];
for(inti=1;
i++)
if(a[i]>
x)___
(2)___;
___(3)___;
(1)
(2)(3)
5.已知一个类的定义如下:
voidAA:
SortA()
inti,j;
for(i=0;
___
(1)___;
i++){
intx=a[i],
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 复习资料