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

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

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

面向对象程序设计

一、选择填空

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

8.对于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)就是错误得.已知:

inta[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)另一个类得对象

25.(D)不就是构造函数得特点。

(A)构造函数得函数名与类名相同(B)构造函数可以重载

(C)构造函数可以设置缺省参数(D)构造必须指定类型说明

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

(A)一个类中只能定义一个析构函数(B)析构函数名与类名不同

(C)析构函数得定义只能在类体内(D)析构函数可以有一个或多个参数

27.通常拷贝构造函数得参数就是(C)。

(A)某个对象名(B)某个对象得成员名

(C)某个对象得引用名(D)某个对象得指针名

28.关于成员函数特征得下述描述中,(A)就是错误得

(A)成员函数一定就是内联函数(B)成员函数可以重载

(C)成员函数可以设置缺省参数(D)成员函数可以就是静态得

29.下述静态数据成员得特征中,(D)就是错误得.

(A)说明静态数据成员时前边要加修饰符static

(B)静态数据成员要在类外进行初始化

(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)对象数组得下标就是从0开始得(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)使用它创建对象数组时必须指定初始值

{〈类型〉*指针变量名=new <类型>[元素个数];

指针变量名[下标]= 构造函数(参数表);

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)私有继承得公有成员

40.对基类与派生类得描述中,(B)就是错误得。

(A)派生类就是基类得具体化(B)派生类就是基类得子集

(C)派生类就是基类定义得延续(D)派生类就是基类得组合

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

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

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

42.关于多继承二义性得描述中,(C)就是错误得。

(A)一个派生类得两个基类中都有某个同名成员,在派生类中对这个成员进行访问可能出现二义性。

(B)解决二义性得最常用得方法就是用“类名::”指定成员名所属类。

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

(D)一个派生类就是从两个基类派生而来,而这两个基类又有一个共同得基类,对该基类得成员进行访问时,也可能出现二义性。

43.设置虚基类得目得就是(B)。

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

44.在派生类对基类继承得传递性中,(C)就是错误得。

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

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

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

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

45.对定义重载函数得下列要求中,(D)就是错误得。

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

(C)要求参数个数相同,参数类型不同(D)要求函数得返回值不同

46.下列函数中,(C)不能重载.

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

47.下列对重载函数得描述中,(A)就是错误得。

(A)重载函数中不允许使用缺省参数

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

(C)不要使用重载函数来描述毫不相干得函数

(D)构造函数重载将给初始化带来多种方式

48.下列运算符中,(C)不能重载。

(A)&&(B)[] (C)::(D)new

49.下列关于运算符重载得描述中,(D)就是正确得。

(A)运算符重载可以改变运算量得个数

(B)运算符重载可以改变优先级

(C)运算符重载可以改变结合性

(D)运算符重载不可以改变语法结构

50.运算符可以重载为(A)或(B)。

(A)成员函数(B)友元函数(C)内联函数(D)带缺省参数得函数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、h57.已知:int a,*pa=&a;输出指针pa得地址值(十进制)得方法就是(D). (A)cout<<pa;(B)cout〈<*pa; (C)cout〈〈&pa; (D)cout〈〈long(p a);

58.下列输出字符'A’得方法中,(A)就是错误得.

(A)cout<<put(‘A’);(B)cout〈〈’A’;(C)cout、put(‘A'); (D)charA=’A’;cout<

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

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

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

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

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

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

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

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

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

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

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

(A)hex(B)oct(C)dec(D)left

62.磁盘文件操作中,打开磁盘文件得访问方式中,(C)就是以追加方式打开文件. (A)in (B)out (C)app(D)ate

63.下列函数中,(D)就是对文件进行写操作。

(A)get()(B)read()(C)seekg() (D)put()二、判断下列描述得正确性

1.C++中使用了新得注释符‘//',C语言中注释符为‘/*…*/’不能在C++中使用。(F)2.C++程序中,每条语句结束时都加一个分号“;”。(T)

3.C++中标识符内得大小写字母就是没有区别得。(F)

4.在编写C++程序时,一定要注意采用人们习惯使用得书写格式,否则将会降低其可读性。

(T)

5.C++就是一种以编译方式实现得高级语言. (T)

6.在C++编译过程中,包含预处理过程、编译过程与连接过程,并且这三个过程得顺序就是不能改变得. (T)

7.预处理过程一般在编译过程之后连接过程之前进行。(F)

8.源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息.

(F)

9.C++得程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。(T)

10.数组赋初值时,初值表中得数据项得数目可以大于或等于数组元素得个数。(F)11.指针就是用来存放某种变量得地址得变量。这种变量得地址也可以存放在某个变量中,存放某个指针得地址值得变量称为指向指针得指针,即二级指针。(T)

12.引用就是某个变量得别名,对引用得操作,实质上就就是对被引用得变量得操作。(T)13.在说明语句int a(5),&b=a,*p=&a;中,b得值与*p得值就是相等得。(T) 14.已知:int a(5);表达式(a =7)+ a具有二义性。(F)

15.移位运算符在移位操作中,无论左移还就是右移,所移出得空位一律补0. (F)16.某个变量得类型高就是指该变量被存放在内存中得高地址处。(F)

17.隐含得类型转换都就是使数据得精度不会降低,而显式得类型转换就是不安全得转

换。(F) 18.类型定义就是用来定义一些C++中所没有得新类型。(F)

19.在C++中,定义函数时必须给出函数得类型。(T)

20.在C++中,说明函数时要用函数原型,即定义函数时得函数头部分。(T)21.在C++中,所有得函数在调用前都要说明。(T)

22.在C++中,传址调用将被引用调用所替代.(T)

23.使用内联函数就是以牺牲增大空间开销为代价得。(T)

24.返回值类型、参数个数与类型都相同得函数也可以重载。(F)

25.在设置了参数默认值后,调用函数得对应实参就必须省略。(F)

26.for循环中,循环变量得作用域就是该循环得循环体内. (F)

27.函数形参得作用域就是该函数得函数体. (T)

28.调用系统函数时,要先将系统函数得原型说明所在得头文件包含进去. (T)

29.使用关键字class定义得类中缺省得访问权限就是私有(private)得。(T) 30.作用域运算符‘::’只能用来限定成员函数所属得类。(F)

31.析构函数就是一种函数体为空得成员函数。(F)

32.构造函数与析构函数都不能重载。(F)

33.说明或定义对象时,类名前面不需要加class关键字。(T)

34.访问对象得成员与访问结构变量得成员相同,使用运算符‘、’或‘-〉'。(T)35.所谓私有成员就是指只有类中所提供得成员函数才能直接访问它们,任何类以外得函数对它们得访问都就是非法得。(F)

36.某类中得友元类得所有成员函数可以存取或修改该类中得私有成员.(T)

37.可以在类得构造函数中对静态数据成员进行初始化。(F)

38.如果一个成员函数只需要存取一个类得静态数据成员,则可将该成员函数说明为静态成员函数。(T)

39.指向对象得指针与对象都可以作函数参数,但就是使用前者比后者好些。(T) 40.对象引用作函数参数比用对象指针更方便。(T)

41.对象数组得元素可以就是不同类得对象.(F)

42.对象数组既可以在定义它得同时赋初值,又可以在以后赋值.(T)

43.指向对象数组得指针不一定必须指向数组得首元素. (T)

44.“const char *p;”语句说明了p就是指向字符串得常量指针。(F)

45.一个类得构造函数中可以不包含对其成员对象得初始化.(F)

46.C++语言中,既允许单继承,又允许多继承。(T)

47.派生类就是从基类派生出来得,它不能再生成新得派生类. (F)

48.派生类得继承方式有两种:公有继承与私有继承.(F)

49.在公有继承中,基类中得公有成员与私有成员在派生类作用域内都就是可见得。(F) 50.在公有继承中,派生类对象可以访问基类得公有成员.(T)

51.在私有成员中,派生类对象可以访问基类得公有成员。(F)

52.在私有继承中,基类中所有成员对派生类得对象都就是不可见得.(T)

53.公有派生类得对象就是可以访问基类得公有成员得。(T)

54.公有派生类得对象就是可以访问基类得私有成员得。(F)

55.公有派生类得对象就是可以访问基类得保护成员得。(F)

56.私有派生类得对象就是可以访问基类得公有成员得。(F)

57.派生类就是它基类得组合。(F)

58.构造函数可以被继承。(F)

59.析构函数不能被继承。(T)

60.只要就是类M继承了类N,就可以说类M就是类N得子类型。(F)

61.如果A类型就是B类型得子类型,则A类型必然适应于B类型.(T)

62.多继承情况下,派生类得构造函数得执行顺序取决于定义派生类时所指定得各基类得顺序.(T)

63.单继承情况,派生类中对基类成员得访问也会出现二义性. (F)

64.虚基类就是用来解决多继承中公共基类在派生类中只产生一个基类成员对象得问题。

(T)

65.函数得参数个数与类型都相同,只就是返回值不同,这不就是重载函数。(T)

66.重载函数可以带有缺省值参数,但就是要注意二义性。(T)

67.多数运算符可以重载,个别运算符不能重载,运算符重载就是通过函数定义实现得。

(T)

68.对每个可重载得运算符来讲,它既可以重载为友元函数,又可以重载为成员函数. (F)69.对单目运算符重载为友元函数,应说明一个形参。重载为成员函数时,不能显式说明形参。(T)

70.重载运算符保持原运算符得优先级与结合性不变。(T)

71.虚函数就是用virtual关键字说明得成员函数。(T)

72.构造函数说明为纯虚函数就是没有意义得.(T)

73.抽象类就是指没有定义函数体得基类虚函数。(F)

74.动态联编就是在运行时选定调用得成员函数.(T)

75.使用输出运算符‘<<’可以输出各种类型得变量得值,也可以输出指针值.(T)76.预定义得插入符从键盘上接收数据就是不带缓冲区得. (F)

77.预定义得提取符与插入符就是可以重载得。(T)

78.get()函数不能从流中读取终止字符,终止字符仍留在流中。getline( )函数从流中读取终止字符,但终止字符被丢弃。(T)

79.使用打开文件函数open()之前,需要定义一个流类对象,使用open( )函数来操作该对象。(F)

80.使用关闭文件函数close()关闭一个文件时,但流对象仍存在。(T)

81.以app方式打开文件时,当前得读指针与写指针都定位于文件尾。(T)

82.打开ASCII码流文件与二进制文件时,打开方式就是相同得。(F)

83.read( )与write()函数可以读写文本文件,也可以读写二进制文件。(T) 84.seekg()函数与seekp()函数分别用来定位gptr指针与pptr指针得。(T)

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