C++程序设计复习题.docx
- 文档编号:28635712
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:45
- 大小:38.62KB
C++程序设计复习题.docx
《C++程序设计复习题.docx》由会员分享,可在线阅读,更多相关《C++程序设计复习题.docx(45页珍藏版)》请在冰豆网上搜索。
C++程序设计复习题
判断题
5使用关键字class定义的类中默认的访问权限是私有(private)的.对
6作用域运算符(:
:
)只能用来限定成员函数所属的类.错
7构造函数和析构函数都不能重载.错
8析构函数是一种函数体为空的成员函数.错
9说明或定义对象时,类名前面不需要加class关键字.对
10对象成员的表示与结构变量成员的表示相同,使用运算符.或->.对
11所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的.对
12某类中的友元类的所有成员函数可以存取或修改该类中的私有成员.对
13可以在类的构造函数中对静态数据成员进行初始化.错
14函数的定义不可以嵌套,类的定义可以嵌套.对
15C++语言中,既允许单继承,又允许多继承.对
16派生类是从基类派生出来,它不能再生成新的派生类.错
17派生类的继承方式中有两种:
公有继承和私有继承.错
18在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的.错
19在公有继承中,基类中只有公有成员对派生类对象是可见的.对
20在私有继承中,基类中只有公有成员对派生类是可见的.错
21在私有继承中,基类中所有成员对派生类的对象都是不可见的.对
22在保护继承中,对于派生类的访问同于公有继承,而对于派生类的对象的访问同于私有继承.对
23派生类中至少包含了它的所有基类的成员,在这些成员中可能有的是不可访问.对
24构造函数可以被继承.错
25析构函数不能被继承.对
26子类型是不可逆的.对
27只要是类M继承了类N,就可以说类M是类N的子类型.错
28如果A类型是B类型的子类型,则A类型必然适应于B类型.对
29多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序.对
30单继承情况下,派生类中对基类成员的访问也会出现二义性.错
31解决多继承情况下出现的二义性的方法之一是使用成员名限定法.对
32虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题.对
33指向对象的指针和指向类的成员的指针在表达形式上是不相同的.对
34已知:
m是类A的对象,n是类A的公有数据成员,p是指向类A中n成员的指针.下述两种表示是等价的.m.n和m.*p对
35指向对象的指针与对象都可以作为函数参数,但是使用前者比后者好些.对
36对象引用作为函数参数比用对象指针更方便些.对
37对象数组的元素可以是不同类的对象.错
38对象数组的既可以赋初值又可以赋值.对
39指向对象数组的指针不一定必须指向数组的首元素.对
40一维对象指针数组的每个元素应该是某个类的对象的地址值.对
41constchar*p说明了p是指向字符串常量的指针.对
42一个能够更新的变量使用在一个不能被更新的环境中是不破坏类型保护的,反之亦然.错
43一个类的构造函数中可以不包含对其子对象的初始化.错
44转换函数不是成员函数,它是用来时行强制类型转换的.错
45使用模板可以减少重复劳动,提高代码重用率.对
46C++语言中模板分为函数模板和类模板两种.对
47类模板可以生成若干个模板类,每个模板类又可定义若干个对象.对
48使用提取符(<<)可以输出各种类型的变量的值,也可以输出指针值.对
49预定义的插入符从键盘上接收数据是不带缓冲区的.错
50预定义的提取符和插入符是可以重载的.对
51记录流的当前格式化状态的标志字中每一位用于记录一种格式,这种格式是不能被设置或清除的.错
52设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是cout.对
53操作子本身是一个对象,它可以直接被提取符或插入符操作.对
54get()函数不能从流中提取终止字符,终止字符仍留在流中.getline()函数从流中提取终止字符,但终止字符被丢弃.对
55ios类的成员函数clear()是用来清除整个屏幕的.错
56使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象.对
57使用关闭文件函数close()关闭一个文件时,但流对象仍存在.对
58以app方式打开文件时,当前的读指针和写指针都定位于文件尾.对
59打开ASCII码流文件和二进制流文件时,打开方式是相同的.错
60read()和write()函数可以读写文本文件,也可以读写二进制文件.对
61流的状态包含流的内容、长度和下一次提取或插入操作的当前位置.对
62seekg()函数seekp()函数分别用来定位读指针和写指针.如果使用seek()函数可以同时定义读写指针.错
63函数的参数个数和类型都相同,只是返回值不同,这不是重载函数.对
64重载函数可以带默认值参数,但要注意二义性.对
65多数运算符可以重载,个别运算符不能,运算符重载是通过函数定义实现的.对
66对每个可重载的运算符来说,只能重载为友元函数.错
67重载的运算符保持原来的优先级和结合性以及操作数的个数.对
68虚函数是用virtual关键字说明的成员函数.对
69构造函数说明为纯虚函数是没有意义的.对
70运算符重载实际上是对已有的运算符重新定义其功能.对
71运算符重载的形式有两种:
成员函数形式和友元形式.对
72纯虚函数是一种特殊的成员函数,它是一种没有具体实现的虚函数.对
73具有纯虚函数的类是抽象类,它的特点是不可以定义对象.对
74预处理命令是在进行编译时首先执行的,然后再进行正常编译.对
75宏定义命令是以分号结束的.错
76带参数的宏定义只能有1个或2个参数.错
77文件包含命令所包含的文件是不受限制的.错
78条件编译命令只在编译时才有作用.对
79预处理命令的主要作用是提高效率.错
80复合语句就是分程序.错
81条件语句不能作为多路分支语句.错
82开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句.错
83开关语句中的default关键字,只能放在该语句的末尾,不能放在开头或中间.错
84switch语句中必须有break语句,否则无法退出switch语句.错
85while循环语句的循环体至少执行一次.错
86do-while循环可以写成while循环的格式.对
87for循环是只有可以确定的循环次数时才可使用,否则不能用for循环.错
88只有for循环的循环体可以是空语句,其他种循环的循环体不能是空语句.错
89当循环体为空语句时,说明该循环不做任何工作,只起延时作用.错
90循环是可以嵌套的,一个循环体内可以包含另一种循环语句.对
91在多重循环中,内重循环的循环变量引用的次数比外重循环多.对
92break语句可以出现在各种循环体中.对
93continue语句只能出现在循环体中.对
94在C++语言中,定义函数时必须给出函数的类型.对
95在C++语言中,说明函数时要用函数原型,即定义函数时的函数头部分.对
96在C++语言中,所有函数在调用前都要说明.错
97如果一个函数没有返回值,定义时需用void说明.对
98在C++语言中,传址调用将被引用调用所替代.对
99使用内联函数是以增大空间开销为代价的.对
100返回值类型、参数个数和类型都相同的函数也可以重载.错
101在设置了参数默认值后,调用函数的对应实参就必须省略.错
102计算函数参数顺序引起的二义性完全是由不同的编译系统决定的.错
103for循环中,循环变量的作用域是该循环的循环体内.错
104语句标号的作用域是定义该语句标号的文件内.错
105函数形参的作用域是该函数的函数体.对
106定义外部变量时,不用存储类说明符extern,而说明外部变量时用它.对
107内部静态类变量与自动类变量作用域相同,但是生存期不同.对
108静态生存期的标识符的寿命是短的,而动态生存期标识符的寿命是长的.错
109重新定义的标识符在定义它的区域内是可见的,而与其同名的原标识符在此域内是不可见的.但是,它是存在的.对
110静态类标识符在它的作用域之外是不存在的.错
111所有的函数在定义它的程序中都是可见的.错
112编译系统所提供的系统函数都被定义在它所对应的头文件中.对
113调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去.对
114C++语言中模板分为函数模板和类模板两种.对
115函数模板中模板参数可用任何一种类型替换.错
116函数模板中模板参数只能有一个.错
117函数模板在编译时不生成可执行代码.对
118一个函数模板只生成一个模板函数.错
119C++语言引进了引用的概念,给编程带来了很多方便.对
120C++语言允许使用友元,但是友元会破坏封装性.对
121C++语言中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++语言中使用.错
122为了减轻使用者的负担,与C语言相比,C++语言中减少了一些运算符.错
123C++程序中,每条语句结束时都加一个分号(;).对
124C++语言中标识符内的大小写字母是没有区别的.错
125C++语言中不允许使用宏定义方法定义符号常量,只能用关键字const来定义符号常量.错
126在编写C++程序时,一定要注意采用人们习惯使用的书写格式,否则会降低其可读性.对
127C++语言是一种以编译方式实现的高级语言.对
128在C++程序编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的.对
129预处理过程是编译过程之后、连接过程之前进行的.错
130源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息.错
131任何字符常量与一个任意大小的整型数进行加减都是有意义的.错
132转义序列表示法只能表示字符不能表示数字.对
133在命名标识符中,大小写字母是不加区分的.错
134C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以.对
135C++中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的.对
136数组赋初值,初始值表中的数据项的数目可以大于或等于数组元素的个数.错
137枚举变量的取值受到该枚举变量所对应的枚举表中枚举符的局限.对
138指针是用来存放某种变量的地址值的变量.这种变量的地址值也可以存放在某个变量中,存放某个指针的地址值的变量称为指向指针的指针,即二级指针.对
139引用是某个变量的别名.对引用的操作,实质上就是对被引用的变量的操作.对
140运算符的优先级和结合性可以确定表达式的计算顺序.对
141在说明语句inta(5),&b=a,*p=&a;中,b的值与a的值是相等的.对
142已知:
inta(5);表达式(a=7)+a具有二义性.对
143移位运符在移位操作中,无论左移还是右移,所移出的空位一律补O.错
144某个变量的类型高是指该变量被存放在内存中的高地址处.错
145隐含的类型转换都是保值映射,显式的类型转换都是非保值映射.错
146类型定义是用来定义一些C++中所没有的新类型.错
147定义结构变量时必须指出该结构变量是属于某种结构类型的.对
148无名结构是不允许定义结构变量的.错
149同一结构的不同成员占用不同的内存单元.对
150联合的所有成员都是没有内存地址的.错
151联合的所有成员都是没有内存地址的.错
选择题
1下列对派生类的描述中,(D)是错误的.
A、一个派生类可以作为另一个派生类的基类B、派生类至少有一个基类C、派生类的成员除了它自己的成员外,还包含了它的基类的成员D、派生类中继承的基类成员的访问权限到派生类保持不变
2派生类的对象对它的基类中(A)是可以访问的.
A公有继承的公有成员B公有继承的私有成员
C公有继承的保护成员D私有继承的仍有成员
3派生类的构造函数的成员初始化值表中,不能包含(C).
A基类的构造函数B、派生类中子对象的初始化
C、派生类中静态数据成员的初始化D、派生类中一般数据成员的初始化
4关于子类型的描述中,(A)是错误的.
A子类型就是指派生类是基类的子类型
B一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型
C在公有继承下,派生类是基类的子类型D子类型关系是不可逆的
5下列关于赋值兼容规则的描述中,(B)是错误的.
A、赋值兼容规则在子类型情况下才可使用B、公有继承下,派生类对象不可给基类对象赋值C、公有继承下,派生类对象可对基类对象引用进行初始化
D、公有继承下,派生类对象的地址值可以赋值给基类的对象指针
6关于多继承二义性的描述中,(C)是错误的.
A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B、解决二义性的最常用的方法是对成员名的限定法C、基类和派生类中同时出现的同名函数,也存在二义性问题D、一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性
7设置虚基类的目的是(B).
A、简化程序B、消除二义性C、提高运行效率D、减少目标代码
8在带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化(D).
A、与虚基类下面的派生类个数有关B、多次C、二次D、一次
9下面关键字中,用以说明类中公有成员是(A).
A、publicB、privateC、protectedD、friend
10下列的各类函数中,(C)不是类的成员函数.
A、构造函数B、析构函数C、友元函数D、复制构造函数
11作用域运算符的功能是(D).
A、标识作用域的级别B、指出作用域的范围C、给定作用域的大小D、标识某个成员是属于哪个类的
12(D)不是构造函数的特征
.A构造函数的函数名与类名相同B、构造函数可以重载
C构造函数可以设置默认参数D构造函数必须指定类型说明
13(A)是析构函数的特征.
A一个类中只能定义一个析构函数B析构函数名与类名不同
C析构函数的定义只能在类体内D析构函数可以有一个或多个参数
14通常复制构造函数的参数是(C).
A某个对象名B某个对象的成员名C某个对象的引用D某个对象的指针名
15下面关于成员函数特征的描述中,(A)是错误的.
A成员函数一定是内联函数B成员函数可以重载
C成员函数可以设置默认值D成员函数可以是静态的
16下述静态数据成员的特性中,(D)是错误的.
A说明静态数据成员时前面要加修饰符staticB静态数据成员要在类体外进行初始化
C引用静态数据成员时,可在静态数据成员名前加<类名>和作用域运算符
D静态数据成员不是所有对象共用的
17友元的作用(A).
A提高程序的运行效率B加强类的封装性
C实现数据的隐藏性D增强成员函数的种类
18已知一个类A,(C)是指向类A成员函数的指针.假如类有三个公有成员:
voidf1(int),voidf2(int)和inta.
AA*pintBA:
:
*pc=&A:
:
aCvoidA:
:
*pa()DA*pp
19运算符->*的功能是(A).
A使用对象指针通过指向成员的指针表示成员的运算B使用对象通过指向成员的指针表示成员的运算C用来表示指向对象指针的成员的运算D用来表示对象成员的运算
20已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用(B)是正确的.Ap=f1Bp=A:
:
f1Cp=A:
:
f1()Dp=f1()
21已知:
p是一个指向类A数据成员m的指针,A1是类A的一个对象.如果要给m赋值为5,(C)是正确的.
AA1.p=5BA1->p=5CA1.*p=5D*A1.p=5
22已知:
类A中一个成员函数说明如下:
voidSet(A&a);其中,A&a的含意是(C).
A指向类A的指针为aB将a的地址值赋给变量Set
Ca是类A的对象引用,用来作为函数Set()的形参D变量A与a按位相与作为函数Set()的参数
23下列关于对象数组的描述中,(D)是错误的.
A对象数组的下标是从0开始的B对象数组的数组名是一个常量指针
C对象数组的每个元素是同一个类的对象D对象数组只能赋初值,而不能赋值
24下列定义中,(B)是定义指向数组的指针
Ap.int*p[5]Bint(*p)[5]C(int*)p[5]Dint*p[]
25下列说明中,constchar*ptr;ptr应该是(C).
A指向字符常量的指针B指向字符的常量指针
C指向字符串常量的指针D指向字符串的常量指针
26已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的.
Avoidprint()constBconstvoidprint()Cvoidconstprint()Dvoidprint(const)
27关于new运算符的下列描述中,(D)是错误的.
A它可以用来动态创建对象和对象数组B使用它创建的对象或对象数组可以使用运算符delete删除C使用它创建对象时要调用析构函数D使用它创建对象数组时必须指定初始值
28关于delete运算符的下列描述中,(C)是错的.
A它必须用于new返回的指针B它也适用于空指针C对一个指针可以使用多次该运算符D指针名前只用一对方括号符,不考虑所删除数组的维数
29具有类型转换功能的构造函数,应该是(B).
A不带参数的构造的构造函数B带有一个参数的构造函数
C带有两个以上参数的构造函数D默认构造函数
30下列关于模板的描述中,错误的是(C).
A类模板的成员函数可以是函数模板B类模板生成模板类时,必须指定参数化的类型所代表的具体类型
C定义类模板时只允许有一个模板参数D类模板所描述的是一组类
31下列关于多态性说法不正确的是(C).
A多态性是指同名函数对应多种不同的实现B多态性表现为重载和覆盖两种方式C重载方式仅有函数重载D重载方式包含函数重载和运算符重载
32下列函数中,(D)不能重载.
A成员函数B非成员函数C构造函数D析构函数
33下列运算符中,(C)个运算符不能重载.
A&&B[]C:
:
Dnew
34下列关于运算符重载的描述中,(D)是正确的.
A运算符重载可以改变操作符的个数B运算符重载可以改变优先级
C运算符重载可以改变结合性D运算符重载不可以改变语法结构
35关于动态联编的下列描述中,(D)是错误的.
A动态联编是以虚函数为基础的B动态联编是在运行时确定所调用的函数代码的C动态联编调用函数操作是用指向对象的指针或是对象的引用D动态联编是在编译时确定操作函数的
36关于虚函数的描述中,(C)是正确的.
A虚函数是一个静态类型的成员B虚函数是一个非成员函数C基类中说明了虚函数之后,D派生类中将其对应的函数可不必说明为虚函数派生类的虚函数与基类的虚函数具有不同的参数个数和类型
37关于纯虚函数和抽象类的描述中,(C)是错误的.
A纯虚函数是一种特殊的虚函数,没有具体实现B抽象类是指具有纯虚函数的类
C抽象类可以定义对象D抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
38下列描述中为抽象类的最主要特征的是(D).
A可以说明虚函数B可以进行构造函数的重载
C可以定义友元D不能说明其对象
39进行文件操作时需要包含(B)文件
Aiostream.hBfstream.hCstdio.hDstdlib.h
40使用操作子对数据进行格式输出时,应包含(C)文件.
Aiostream.hBfstream.hCiomanip.hDstdlib.h
41已知:
inta,*pa=&a;输出指针pa十进制的地址值的方法是(D).
Acout< 42下列输出字符'A'的方法中,(A)是错误的. Acout< 43关于getline()函数的下列描述中,(D)是错误的. A该函数是用来从键盘上读取字符串的B该函数读取的字符串长度是受限制的 C该函数读取字符串时遇到终止符便停止D该函数中所使用的终止符只能是换行符 44关于read()函数的下列描述中,(B)是对的. A该函只能从键盘输入中获取字符串B该函数所获取的字符多少是不受限制的 C该函数只能用于文本文件的操作中D该函数只能按规定读取所指定的字符数 45在ios中提供控制格式的标志位中,(A)是转换为十六进制形式的标志位. AhexBoctCdecDleft 46控制格式输出输入的操作中,(D)是设置域宽的. AwsBoctCsetfill()Dsetw() 47磁盘文件操作中,打开磁盘文件的访问方式常量中,(C)是以追加方式打开文件的. AinBoutCappDate 48下列函数中,(D)是对文件进行写操作的. Aget()Bread()Cseekg()Dput() 49预处理命令在程序中都是以(B)开头的. A*B#C: D/ 50文件包含命令中被包含的文件的扩展名(D). A必须为.hB不能用.hC必须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 复习题