面向对象程序设计
一、选择填空
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)就是错误得.