当前位置:文档之家› 面向对象程序设计习题及答案.docx

面向对象程序设计习题及答案.docx

面向对象程序设计习题及答案.docx
面向对象程序设计习题及答案.docx

面向对象程序设计

一、选择填空

1 .关于C++与C语言的关系描述中,(D)是错误的。

(A)C语言是C+ +的一个子集(B) C语言与C++是兼容的

(C) C + +对C语言进行了一些改进(D) C++和C语言都是面向对象的

2. 下面关于对象概念的描述中,(B)是错误的。

(A)对象就是C语言的结构变量(B)对象代表着正在创建的系统中的一个实体

(C)对象是一个状态的操作(或方法)的封装体

( D )对象之间的信息传递是通过消息进行的

3. 下面关于类概念的描述中,(D)是错误的。

(A)类是抽象数据类型的实现(B)类是具有共同行为的若干对象的统一描述体

(C)类是创建对象的样板(D)类就是C语言的结构类型

4.按照标识符的要求,( A )符号不能组成标识符。

(A)连接符(B)下划线(C)大小写字母(D)数字字符

5. 下列符号中,(C)不可作为分隔符。

( A) , ( B) :( C)?( D);

6. 在16位机中,int型字宽为(A)字节。

(A) 2 ( B) 4 ( C) 6 ( D) 8

7. 类型修饰符UnSigned修饰(D)类型是错误的。

( A ) char ( B) int ( C) long int ( D) float

& 对于int *pa[5];的描述,(D)是正确的。

(A)pa 是一个指向数组的指针,所指向的数组是 5 个int 型元素

(B)pa 是一个指向某数组中第 5 个元素的指针,该元素是int 变量

(C)pa[5]表示某个数组的第5个元素

(D)pa 是一个具有 5 个元素的指针数组,每个元素是一个int 型指针。

9.下列关于指针的运算中,(D)是非法的。

( A) 两个指针在一定条件下,可以进行相等或不等的运算。

( B) 可以有一个空指针赋值给某个指针。

( C) 一个指针可以加上一个整数。

( D) 两个指针在一定条件下,可以相加。

10 .指针可以用来表示数组元素,下列表示中( A)是错误的。已知:

int a[3][7];

(A)*(a+1)[5] (B) *(*a+3) (C) *(*(a+1)) (D) *(&a[0][0]+2)

11.下列表示引用的方法中,(A)是正确的。已知:m=10;

(A)int &x=m; (B) int &y=10; (C) int & z; (D) float &t=&m;

12 .下列各运算符中,(A)可以作用于浮点数。

(A)++ ( B) % (C) >> ( D) &

(与C语言不同,在C+ +中++和--运算符可以作用于浮点数)

13 当一个函数无返回值时,定义它其函数类型应是( A)。

(A)void ( B)任意(C) int ( D)无

14 .在函数说明时,下列(D)项是不必要的。

(A)函数的类型(B)函数的参数类型和名字

(C)函数名字(D)返回值表达式

15.下列的( D )是引用调用。

( A )形参是指针,实参是地址值( B )形参和实参都是变量

(C)形参是数组名,实参是数组名(D)形参是引用,实参是变量

16. 在C+ +中,下列关于设置参数默认值的描述中,(B)是正确的。

(A)不允许设置参数的默认值

(B)设置参数默认值时,应按从右到左的顺序进行

(C)设置参数默认值时,应按从左到右的顺序进行

( D )设置参数默认值时,应该全部参数都设置

17. 重载函数在调用时选择的依据中,(D)是错误的。

(A)参数个数(B)参数类型(C)函数名字 (D)函数的返回值类型

18. 在一个函数中,要求通过函数调用来实现一个不太复杂的功能,并且要求加快执行速度,

选用(A)最合适。

(A)内联函数(B)重载函数(C)递归函数(D)嵌套调用

19. 采用函数重载的目的在于( D)

(A)实现共享(B)减少空间(C)提高速度(D)使用方便,提高可读性

20. 说明语句“const char * ptr; 中”,ptr 应该是( C)。

(A)指向字符常量的指针(B)指向字符的常量指针

(C)指向字符串常量的指针(D)指向字符串的常量指针

21. 在下列关键字中,用以说明类中公有成员的是( A)。

(A)public ( B) private ( C) protected ( D) friend

22. 下列的种类函数中,(C)不是类的成员函数。

(A)构造函数(B)析构函数(C)友元函数(D)拷贝构造函数

23. 作用域运算符的功能是( D)。

(A)标识作用域的级别(B)指出作用域的范围

(C)给定作用域的大小(D)标识某个成员是属于哪个类

24. ( B)是不可以作为该类的成员的。

(A)自身类对象的指针(B)自身类的对象

(C)自身类对象的引用(D)另一个类的对象

(A) 说明静态数据成员时前边要加修饰符 (B) 静态数据成员要在类外进行初始化

25. ( D )不是构造函数的特点。 (A )构造函数的函数名与类名相同 (C )构造函数可以设置缺省参数

26. (A )是析构函数的特征。

(A ) —个类中只能定义一个析构函数 (C )析构函数的定义只能在类体内

27.

通常拷贝构造函数的参数是(

C )。

(A )某个对象名 (C )某个对象的引用名 28.

关于成员函数特征的下述描述中, (A )成员函数一定是内联函数

(C )成员函数可以设置缺省参数 (B) 构造函数可以重载 ( D )构造必须指定类型说明 (B) 析构函数名与类名不同

(D )析构函数可以有一个或多个参数 (B) 某个对象的成员名 (D) 某个对象的指针名 A )是错误的 (B)

成员函数可以重载

(D )成员函数可以是静态的

D )是错误的。 static

(C)引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符

(D)静态数据成员不是所有对象共有的

30.友元的作用是( A)

(A)提高程序的运行效率(B)加强类的封装性

(C)实现数据的隐藏(D)增加成员函数的种类

31.已知类A 中一个成员函数说明如下:void Set(A &a); 其中A &a 的含义是( C)。

(A)指向类A的指针a ( B)将a的地址赋给变量Set

(C) a 是类 A 对象的引用,用来作函数Set( )的形参

(D)变量A与a按位逻辑与,作为函数Set()的参数

32. 下列关于对象数组的描述中,(D)是错误的。

(A)对象数组的下标是从O开始的 (B)对象数组的数组名是一个常量指针

(C)对象数组的每个元素是同一个类的对象

( D )对象数组只能赋初值,而不能被赋值

{ 赋值格式:对象数组名[行下标][列下标] = 构造函数名(实参表) ; }

33. 下列定义中,(B)是定义指向数组的指针P。

(A) int *p[5]; (B) int (*p)[5]; (C) (int *)p[5]; (D) int *p[ ];

34. 已知:Print()函数是一个类的常(Const)成员函数,它无返回值,下列表示中,(A)是正确的。

( A) void Print( ) Const; ( B) Const void Print( );

(C)void Const Print( ); (D) void Print (Const);

{ this 指针是一个常量指针,但也可以将它定义成指向常量的常量指针,其方法是在定义成员函数时,或者在类中声明成员函数时,在函数头后面加上关键字Const }

35. 关于new运算符的下列描述中,(D)是错误的。

(A)它可以用来动态创建对象和对象数组

(B)使用它创建的对象或对象数组应使用运算符delete删除

(C)使用它创建对象时要调用构造函数

(D)使用它创建对象数组时必须指定初始值

{ V类型> *指针变量名=new V类型>[元素个数]; 指针变量名[下标] = 构造函数(参数表);

}

36. 关于delete运算符的下列描述中,(C)是错误的。

(A)它必须用于new返回的指针(B)它也适用于空指针

(C)对同一个动态对象可以多次使用该运算符

(D)指针名前只用一对方括号符,不管所删除数组的维数

37. 具有转换功能的构造函数,应该是( B)。

(A)不带参数的构造函数(B)带有一个参数的构造函数

(C)带有两个以参数的构造函数(D)缺省构造函数

38. 下列对派生类的描述中,(D)是错误的。

(A)一个派生类可以作另一个派生类的基类

(B)派生类至少有一个基类

(C)派生类的成员除了它自己的成员外,还包含了其基类的成员

( D )派生类中从基类继承的成员,其访问权限保持不变

39. 派生类对象对基类有成员中( A)是可以访问的。

(A)公有继承的公有成员(B)公有继承的私有成员

(C )公有继承的保护成员 (D )私有继承的公有成员

对基类和派生类的描述中, (B )是错误的。

(A )派生类是基类的具体化 (B )派生类是基类的子集 (C )派生类是基类定义的延续 (D )派生类是基类的组合

派生类构造函数的成员初始化列表中不能包含( C )。

(C )基类成员对象的初始化 (D )派生类中一般数据成员的初始化

关于多继承二义性的描述中, (C )是错误的。 (A ) 一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员进行访问可 能出

现二义性。

(B ) 解决二义性的最常用的方法是用“类名

::”指定成员名所属类。

(C ) 基类和派生类中出现的同名成员函数,也存在二义性问题。

(D ) 一个派生类是从两个基类派生而来,而这两个基类又有一个共同的基类,对该基 类的

成员进行访问时,也可能出现二义性。

设置虚基类的目的是( B )。

(A )简化程序 (B )消除二义性 (C )提高运行效率 (D )减

少目标代码 在派生类对基类继承的传递性中, (C )是错误的。

(A ) 在公有继承方式下,直接派生类对象可以直接调用基类中的公有成员函数,去访

问基类的私有数据成员。

(B ) 在公有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访 问基类的私有数据成员。

(C ) 在私有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访 问基类的私有数据成员。

(D ) 不管是私有继承还是公有继承,基类中的私有成员在派生类的作用域内都是不可

见的。

对定义重载函数的下列要求中, (D )是错误的。 (A )要求参数的个数不同

(B )要求参数中至少有一个类型不同

(C )要求参数个数相同,参数类型不同 (D )要求函数的返回值不同 下列函数中,(C )不能重载。 (A )成员函数

(B )非成员函数 (C )析构函数 (D )构造函数

下列对重载函数的描述中, (A )是错误的。 (A ) 重载函数中不允许使用缺省参数

(B ) 重载函数中编译系统根据参数表进行选择

(C ) 不要使用重载函数来描述毫不相干的函数 (D ) 构造函数重载将给初始化带来多种方式 下列运算符中,(C )不能重载。 A ) &&

(B ) [ ]

(C ) ::

(D ) new

下列关于运算符重载的描述中, (D )是正确的。 (A ) 运算符重载可以改变运算量的个数 (B ) 运算符重载可以改变优先级 (C ) 运算符重载可以改变结合性

D )运算符重载不可以改变语法结构 运算符可以重载为(A )或(B )。 (A )成员函数

(B )友元函数 (C )内联函数 (D )带缺省参数的函数

40.

41.

42.

43.

44.

45.

46. 47.

48.

49.

50. (A )基类的构造函数 (B )派生类中成员对象的初始化

51.关于动态联编的下列描述中, (D )是错误的。

(A)动态联编是以虚函数为基础的

(B)动态联编是在程序运行时确定所调用的函数代码块

(C)动态联编调用多态函数时传递给它的是基类对象的指针或基类对象的引用

(D)动态联编是在编译时确定调用某个函数的

52. 关于虚函数的描述中,(C)是正确的。

(A)虚函数是一个StatiC类型的成员函数

(B)虚函数是一个非成员函数

(C)基类中说明了虚函数后,其派生类中的对应函数可不必重新再说明

(D)基类中的虚函数和其派生类中的虚函数具有不同的参数个数和类型

53. 用虚函数只有在(B)和(D)时才能实现多态性。

(A)基类和派生类具有同名虚函数,而它们的参数个数不同

(B)用基类的指针或基类的引用来访问虚函数

(C)基类和派生类具有同名虚函数,而它们的参数至少有一个类型不同

(D)基类和派生类具有函数原型完全相同的同名虚函数,而函数体内的执行代码不同

54. 关于纯虚函数和抽象类的描述中,(C)是错误的。

(A)纯虚函数是一种特殊的虚函数,它没有具体的实现部分

(B)抽象类是指具有纯虚函数的类

(C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

(D)抽象类只能作为基类使用,其纯虚函数的实现部分由派生类给出

55. 下列描述中,(D)是抽象类的特性。

(A)可以说明虚函数(B)可以进行构造函数重载

(C)可以定义友元函数(D)不能说明其对象

56. 进行文件操作时需要包含(B)文件。

( A) ioStream.h (B) fStream.h (C) Stdio.h ( D) Stdlib.h

57. 已知:int a,*pa=&a;输出指针Pa的地址值(十进制)的方法是( D)。

( A) Cout<

58. 下列输出字符?A?的方法中,(A)是错误的。

( A) Cout<

59. 关于getline()函数的下列描述中,(D)是错误的。

(A)该函数是用来从键盘上读取字符串的

(B)该函数读取的字符串长度是受限制的

(C)该函数读取字符串时遇到终止符就停止

(D)该函数中所使用的终止符只能是换行符

60. 关于read()函数的下列描述中,(D)是对的。

(A)该函数只能从键盘中读取字符串

(B)该函数读取的字符串长度是不受限制的

(C)该函数只能用于文本文件的操作

(D)该函数只能按规定读取所指定的字符数

61. ios类提供控制格式标志位中,(A)是指定转换十六进制形式的标志位。

相关主题
文本预览
相关文档 最新文档