复习题
一、选择填空
1.在下列关键字中,用来说明类中公有成员的是( )。
A. Public B. Private C. protected D. friend
答:A。
2.下列的各种函数中,( )不是类的成员函数。
A.构造函数 B.析构函数 C.友元函数 D.拷贝初始化构造函数
答:C。
3.作用域运算符的功能是( )。
A.标识作用域的级别的
B.指出作用域的范围的
C.给定作用域的大小的
D.标识某个成员是属于哪个类的
答:D。
4.( )是不可以作为该类的成员的。
A.自身类对象的指针
B.自身类的对象
C.自身类对象的引用
D.另一个类的对象
答:B。
5.( )不是构造函数的特征。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
答:D。
6.( )是析构函数的特征。
A.一个类中只能定义一个析构函数
B.析构函数名与类名不同
C.析构函数的定义只能在类体内
D.析构函数可以有一个或多个参数
答:A。
7.通常的拷贝初始化构造函数的参数是( )。
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
答:C。
8.关于成员函数特征的下述描述中,( )是错误的。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
答:A。
9.下述静态数据成员的特性中,( )是错误的。
A.说明静态数据成员时前边要加修饰符static
B.静态数据成员要在类体外进行初始化
c.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D.静态数据成员不是所有对象所共用的
答:D。
l0.友元的作用( )。
构造函数可以被重载 A.提高程序的运用效率
B.加强类的封装性
C.实现数据的隐藏性
D.增加成员函数的种类
答:A。
11.下列关于对象数组的描述中,( )是错误的。
A.对象数组的下标是从0开始的
B.对象数组的数组名是一个常量指针
C.对象数组的每个元素是同一个类的对象
D.对象数组只能赋初值,而不能被赋值
答案:D。
12.下列定义中,( )是定义指向数组的指针P。
A. int*p[5];
B. int(*p)[5];
C. (int *)p[5]
D. int*p[];
答案:B。
13.下列说明中
Const char * Ptr;
ptr应该是( )。
A.指向字符常量的指针
B.指向字符的常量指针
C.指向字符串常量的指针
D.指向字符串的常量指针
答案:C。
14.已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中
是正确的。
A. void print()const ;
B. const void Print( );
C. void const print( );
D. void print (const);
答案:A。
15.关于new运算符的下列描述中,( )是错的。
A.它可以用来动态创建对象和对象数组
B.使用它创建的对象或对象数组,可以使用运算符delete删除
C.使用它创建对象时要调用构造函数
D.使用它创建对象数组时必须指定初始值
答案:D。
16.关于delete运算符的下列描述中,( )是错的。
A.它必须用于new返回的指针
B.它也适用于空指针
C.对一个指针可以使用多次该运算符
D.指针名前只用一对方括号符,不管所删除数组的维数
答案:C。
17.具有转换函数功能的构造函数,应该是( )。
A.不带参数的构造函数
B.带有一个参数的构造函数
C.带有两个以上参数的构造函数
D.默认构造函数
答案:B。
18.下列对派生类的描述中,( )是错的。
A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
答:D。
19.派生类的对象对它的基类中( )是可以访问的。
A.公有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
n私有继承的公有成员
答:A。
20.对基类和派生类的关系描述中,( )是错的。
A.派生类是基类的具体化
B.派生类是基类的子集
C.派生类是基类定义的延续
D.派生类是基类的组合
答:B。
21.派生类的构造函数的成员初始值表中,不能包含( )。
A.基类的构造函数
B.派生类中子对象的初始化
C.基类的子对象初始化
D.派生类中一般数据成员的初始化
答:C。
22.关于子类型的描述中,( )是错的。
A.子类型就是指派生类是基类的子类型
B.一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子
类型
C.在公有继承下,派生类是基类的子类型
D.子类型关系是不可逆的
答:A。
23.关于多继承二义性的描述中,( )是错的。
A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
B.解决二义性的最常用的方法是对成员名的限定法
C.基类和派生类中同时出现的同名函数,也存在二义性问题
D.一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性
答:C。
24.设置虚基类的目的是( )。
A.简化程序
B.消除二义性
C.提高运行效率
D.减少目标代码
答:B。
25.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造
函数,这样将对虚基类的子对象初始化( )。
A.与虚基类下面的派生类个数有关
B.多次
C.二次
D.一次
答:D。
26.对定义重载函数的下列要求中。( )是错误的
A.要求参数的个数不同
B.要求参数中至少有一个类型不同
C.要求参数个数相同时,参数类型不同
D.要求函数的返回值不同
答:D
27.下列函数中,( ) 不能重载。
A.成员函数
B.非成员函数
C.析构函数
D.构造函数
答:C。
28.下列对重载函数的描述中,( )是错误的。
A.重载函数中不允许使用默认参数
B.重载函数中编译系根据参数表进行选择
C.不要使用重载函数来描述毫无相干的函数
D.构造函数重载将会给初始化带来多种方式
答:A。
29.下列运算符中,( )运算符不能重载。
A. && B. [] C. :: D. new
答:C。
30.下列关于运算符重载的描述中,( )是正确的。
A.运算符重载可以改变操作数的个数
B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构。
答:D。
31.运算符重载函数是( )。
A.成员函数
B.友元函数
C.内联函数
D.带默认参数的函数
答:A,B。
32.关于动态联编的下列描述中,( )是错误的。
A.动态联编是以虚函数为基础的
B.动态联编是在运行时确定所调用的函数代码的
C.动态联编调用函数操作是用指向对象的指针或对象引用
D.动态联编是在编译时确定操作函数的
答:D。
33.关于虚函数的描述中,( )是正确的。
A.虚函数是一个static类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
答:C
34.关于纯虚函数和抽象类的描述中,( )是错误的。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
答:C。
35.下列描述中,( )是抽象类的特性。
A.可以说明虚函数
B.可以进行构造函数重载
C.可以定义友元函数
D.不能说明其对象
答:D。
36.进行文件操作时需要包含( )文件。
A:iostream.h B.fstream.h C. stdio.h D.stdlib.h
答: B。
37.使用操作子对数据进行格式输出时,应包含( )文件。
A. iostream.h B. fstream.h C。 iomanip.h D. stdlib.h
答:C。
38.已知:int a,*pa=&a;输出指针pa十进制的地址值的方法是( )。
A. cout<<pa B. cout<<*pa
C.cout<<&pa D.cout<<long(&pa)
答:D。
39.下列输出字符’A’的方法中,( )是错误的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论