面向对象程序设计期末总复习题
、单项选择题
1. _________________________________ 下面关于对象概念的描述中, 是错误的。(B )
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的2. _____________________________ 继承机制的作用是: (C)
5. __________________________________ 通常拷贝构造函数的参数是
。 (C)
6. ___________________________________________________________________ 如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是 ______________________________ 。 (C)
C.
virtual void show()=0 ; D.void show=0 virtual ;
7. 下面关于友元的描述中,错误的是 __________ 。(D)
A. 友元函数可以访问该类的私有数据成员
B. 一个类的友元类中的成员函数都是这个类的友元函数
C. 友元可以提高程序的运行效率
D. 类与类之间的友元关系可以继承 8. 在C++中, _________ 运算符不能重载。(B)
A. +
B. ? :
C.-
D.<=
9. 下列关于运算符重载的描述中, __________是正确的。(D) A.
运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级
C.运算符重载可以改变结合性
D.运算符重载不可以改变语法结构
10. 在下列函数原型中,可以作为类
AA 构造函数的是 ___________ (D)
A . void AA(int) ;
B . int AA( ) ;
C . AA(int)const;
D . AA(int);
11. 在声明类时,下面的说法正确的是 ___________ 。(C)
A. 可以在类的声明中给数据成员赋初值
B. 数据成员的数据类型可以是 register
C. private , public , protected 可以按任意顺序出现
D. 没有用private , public , protected 定义的数据成员是公有成员
12. 继承具有 _______ ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的
A.对象代表着正在创建的系统中的一个实体
B.对象就是C 语言中的结构体变量
A .信息隐藏
B ?数据封装
C .定义新类
D ?数据抽象 A.析构函数有且只有一个
B.析构函数无任何函数类型
D.析构函数不能是虚函数
4.友兀的作用之一是
(A)
A.提高程序的运行效率
B.加强类的封装性
C.析构函数没有形参
D.增加成员函数的种类
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名 A. virtual show()=0
B. virtual void show()
3.有关析构函数的说法不正确的是 ____________ (D)
C.实现数据的隐藏性
成员。(B)
___________ 。(A)
16. _________________________________________ 下面关于C++语言变量的叙述错误的是 (B)
A .在C++语言中变量分为 auto , static , extern 和register 四种存储类型
B .自动变量和外部变量的作用域为整个程序
C .内部变量的作用域是定义它的函数
D .外部静态变量的作用域是定义它的文件
17. 下列的各类函数中, _______ 不是类的成员函数。 (C)
A. 构造函数
B.析构函数
C.友元函数
18. 有如下类声明:
Class Foo {ing bar ;}; 则Foo 类的成员bar 是 ___________ (C)
23.声明一个类的对象时, 系统自动调用一个函数; 撤消对象时, 系统自动调用一个函数; 该函数为___C
A.成员函数;构造函数
B.复制构造函数;析构函数
C.构造函数;析构函数
D ?析构函数;复制构造函数
24.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的
__A _____
B. proteCted 成员
C.
public 成员 D.友元
25.在C++中,要实现动态联编,必须使用 _________ D___调用虚函数
A. 类名
B.派生类指针
A. 规律性 13. 在 多 重 继 承 中 ,
B. 传递性
C.重复性
D. 多样性
公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则
A. 完全相同
B. 完全不同
C. 部分相同,部分不同
D.以上都不对
14. 对虚函数的调用 ___________ 。 (D)
A. 一定使用动态联编 C. 一定使用静态联编
15. 关于成员函数特征的下述描述中,
A. 成员函数一定是内置函数
B. 必须使用动态联编 D.不一定使用动态联编
_______ 是错误的。 (A)
B. 成员函数可以重载
C. 成员函数可以设置参数的默认值
D.成员函数可以是静态的
D.拷贝构造函数
A. 公有数据成员
B. 公有成员函数
C. 私有数据成员
D. 私有成员函数
19. 下列表示引用的方法中, ___________ A. float &t=&m
; B.int &y=10
20. 设置虚基类的目的是 _________ 。 (B)
A. 简化程序
B. 消除二义性
21.对于类中定义的成员,其隐含访问权限为
A.publiC
B.private
22.关于类和对象不正确的说法是 ________
A. 类是一种类型,它封装了数据和操作 是正确的。已知: int m=10; (D)
;
C.int &z ;
D. int &x=m
C.提高运行效率
D .减少目标代码
_______ (B)
C.static
D.protecte
d
(B)
B. —个类的对象只有 个
C.对象是类的实例
A.private 成员 D. 一个对象必属于某个类
C.对象名
若一个类中含有纯虚函数,则该类称为 A. 抽象类
C.派生类 下列关于 this 指针的叙述中,正确的是 A .任何与类相关的函数都有
this 指针
B .类的成员函数都有 this 指针
C .类的友元函数都有 this 指针
D .类的非静态成员函数才有 t his 指针 有如下类声明: class Book {int num() ;}; 则 Book 类的成员 num 是___ D _ A .公有数据成员 B .公有成员函数 下面有关重载函数的说法中正确的是 ___C
A.重载函数必须具有不同的返回值类型; C)重载函数必须有不同的形参列表; 下面对友元函数描述正确的是 _________ ___C A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐藏性
D.友元函数不能访问类的私有成员
下面叙述不正确的是 ___A _
A. 基类的保护成员在派生类中仍然是保护成员
B. 基类的保护成员在公有派生类中仍然是保护成员
C. 基类的保护成员在私有派生类中是私有成员
D. 对基类成员的访问必须是无二义性
下面对静态数据成员的描述中,正确的是 __________ ___D
A. 静态数据成员可以在类体内进行初始化
B. 静态数据成员不可以被类的对象调用
C. 静态数据成员不能受 private 控制符的作用
D. 静态数据成员可以直接用类名调用
在C++类语言体系中,不能被派生类继承的有 ______ B
A .转换函数
B .构造函数
C .虚函数
D .静态成员函数
26. 27. 28.
29.
30.
31. 32. 33.
34.
35.
36.
D.基类指针
___ A ___ B. 纯基类
D. 基类
___D ____ C .私有数据成员 D .私有成员函数
B.重载函数形参个数必须不同; D.重载函数名可以不同;
B .简化代码 D. 减少目标代码 ___B ____
B. 调用成员函数实现
D.函数重载实现 __C _____
C. ::
D./
设置虚基类的目的是 ___A ____ A. 消除二义性
C.提高运行效率
在C++语言程序中, 对象之间的相互通信通过 A. 继承实现
C. 封装实现
下列运算符中,在 C++语言中不能重载的是 A.*
B.>=
37.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函
38 ?下列关于虚基类的描述中,错误的是
_B _______
A. 设置虚基类的目的是为了消除二义性
; B. 虚基类的构造函数在非虚基类之后调用
;
C. 若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用
;
D. 若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数
39. _______________________________________________________________________________ 考虑函数原型 void test (int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是 ________________ C ____
41.
在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是 ()。D
A. —元成员运算符 B .二元成员运算符
C .一元友元运算符
D .选项B 和选项C 都可能
42.
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是 ()°C
A 派生类的对象可以赋给基类的对象
B
.派生类的对象可以初始化基类的引用
C. 派生类的对象可以直接访问基类中的成员 D .派生类的对象的地址可以赋给指向基类的指针 43.
下面关于虚函数的描述,错误的是
()。B
A. 在成员函数声明的前面加上 virtual 修饰,就可把该函数声明为虚函数
B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C. 虚函数可以是另一个类的友元函数,但不能是静态成员函数
D. 基类中说明的纯虚函数在其任何派生类中都必须实现 44.
定义派生类时,若不
使用关键字显示地规定采用何种继承方式,则默认方式为 ()。A
A.私有继承 B .非私有继承 C .保护继承 D .公有继承 45. 有如下程序: #in clude using n amespace std ; class ONE{ int c ; public:
ONE() : c (0) {cout<<1 ; } ONE( int n ) : c (n ) {cout<<2 ; } }; class TWO{
数是 ____ C ___
A.友元函数
B.虚函数
C.构造函数
D.析构函数
A. test (5)
B.test (5,8)
40. 下列关于构造函数的描述中,错误的是
A.构造函数可以设置默认参数; C.test(6,"#") D.test(O,O."*");
D
B. 构造函数在定义类对象时自动执
C.构造函数可以是内联函数;
D.构造函数不可以重载
ONE onel;
ONE one2; public:
TWO ( int m ): one2( m ) {cout<<3 ;} };
int main () { TWO t4() return 0
}
运行时的输出结果是 ( ) 。 C A .3 B .23 C .123 D .213
46. 关于静态数据成员的描述中正确的是 D A )类的静态数据成员不是类的所有对象共享的数据 B )类的静态数据成员不能被类的成员函数调用 C )类的静态数据成员不能被类的构造函数调用
D )类的静态数据成员必须进行初始化
47 下面正确的是,在父类中的访问属性访问修饰符在子类中的访问属性()
C
A )public , private 不能直接访问
B )protect , public , public
C )private , public 不能直接访问
D )protect , private , protect 48类A 是类B 的友元,类B 是类C 的友元,则下列说法正确的是
D
A )类
B 是类A 的友元 B )类
C 是类A 的友元 C )类A 是类C 的友元
D )以上都不对
49 下列关于构造函数说法不正确的是 C
50. 类的析构函数的作用是 D
A ) 一般成员函数的初始化 C )对象的初始化 51. 下列说法正确的是 B
A ) 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B ) 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C ) 类的内联函数必须在类体内定义
D )
类的内联函数必须在类体外通过加关键字 i nline 定义
52. 下面对静态数据成员的描述中,正确的是 D
A ) 静态数据成员可以在类体内进行初始化
B ) 静态数据成员不可以被类的对象调用 C) 静态数据成员不能受 private 控制符的作用
A )构造函数必须与类同名
B ) 构造函数可以省略不写
C )构造函数必须有返回值
D ) 在构造函数中可以对类中的成员进行初始化
B ) 类的初始化 D )删除类创建的对象