c++复习题(答案) 下载本文

38、 关于成员函数特征的下列描述中,( A )是错误的。 A、成员函数一定是内联函数;

B、成员函数可以重载;

C、成员函数可以设置缺省参数值; D、成员函数可以是静态的; 39、 在公有继承的情况下,基类成员在派生类中的访问权限( B )。 A、受限制

B、保持不变

C、受保护

D、不受保护

40、 友元的作用是( A )。

A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性;

D、增加成员函数的种类;

41、 在C++中,关于下列设置缺省参数值的描述中,(B )是正确的。 A、不允许设置缺省参数值;

B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数; C、只能在函数的定义性声明中指定参数的缺省值; D、设置缺省参数值时,必须全部都设置;

42、关于delete运算符的下列描述中,( C )是错误的。 A、它必须用于new返回的指针; B、使用它删除对象时要调用析构函数; C、对一个指针可以使用多次该运算符;

D、指针名前只有一对方括号符号,不管所删除数组的维数。 43、const int *p说明不能修改( C )。 A、p指针;

B、p指针指向的变量;

C、p指针指向的数据类型; D、上述A、B、C三者;

44、当需要打开A盘上的以xxk.dat文件用于输入时,则定义文件流对象的语句为 ( B)。A、fstream fin(“A:xxk.dat”,1) B、ifstream fin(“A:xxk.dat”,ios::nocreate) C、ofstream fin(“A:xxk.dat”) D、ifstream fin(“A:xxk.dat”,ios::app)

45、派生类的对象对它的基类成员中(A )是可以访问的。 A、公有继承的公有成员; B、公有继承的私有成员; C、公有继承的保护成员; D、私有继承的公有成员;

46、 在int a=3; *p=&a;中,*p的值是( D )。

5

A、变量a的地址值 B、无意义 C、变量p的地址值 D、 3

47. 下述静态数据成员的特征中,( D )是错误的。 A. 说明静态数据成员时前边要加修饰符static; B. 静态数据成员要在类体外进行初始化;

C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; D. 静态数据成员不是所有对象所共用的。

48. ( A)是析构函数的特征。 A. 一个类中只能定义一个析构函数; C. 析构函数的定义只能在类体内;

B. 析构函数与类名没有关系;

D. 析构函数可以有各个或多个参数。;

49. 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为 5,(C )是正确的。 A. A1.p=5; C. A.*p=5;

B. A1->p=5; D. *A1.p=5;

50. 派生类的构造函数的成员初始化列中,不能包含( C )。 A. 基类的构造函数; B. 派生类中子对象的初始化; C. 基类的子对象初始化;

D. 派生类中一般数据成员的初始化

51. 派生类的对象对它的基类成员中( A)是可以访问的。 A. 公有继承的公有成员; B. 公有继承的私有成员; C. 公有继承的保护成员; D. 私有继承的公有成员。

52.C++类体系中,不能被派生类继承的有(A )。 A.构造函数

B.虚函数

C.静态成员函数

D.赋值操作函数

53.下面标识符中正确的是(A )。 A._abc B.3ab C. int

D.+ab

54.下列哪项(D )不是面向对象程序设计的主要特征? a.封装

b.继承

c.多态

d.结构

6

二、填空题

1. C++语言的头文件与源程序文件扩展名分别是(.h )和(.cpp) 3. 在C++语言中,惟一的一个三目运算运算符是(? :

)。

2. 在C++程序中使用基本输入与输出流时需要包含的头文件名是( ) 4. C++中当一个函数无返回值时,则函数的类型是(void )。

5. 一个类中可以有(多 )个构造函数,只能有(一 )个析构函数。 6.一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为(私有 而把成员函数(方法)定义为(公有

)权限.

)权限,

函数初始化对象自身.在撤销 7.在定义类的对象时,C++程序将自动调用该对象的(构造)类的对象时,C++程序将自动调用该对象的(析构 ) 函数. 8.类继承中,缺省的继承方式是(私有继承) . 9.在C++语言中,用转义字符序列('\\n'

)或操纵符(endl )表示输出一个换行符。

10.表达式a=a+l表示成增量表达式为(++a )。

11.当不需要函数返回任何值时,则应把该函数类型定义为(void )。 12.用于输出表达式值的标准输出流对象是(cout 准输人流对象是(cin )。

13、变量分为全局和局部两种,(全局变量默认初始化为0 )。变量没有赋初值时,其值是不确定的。 14、假定类 AB 中有一个公用属性的静态数据成员 bb,在类外不通过对象名访问该成员 bb 的写法为(AB::bb )。

15、类的成员分为__数据成员__和_成员函数_。 16、一个__类__和__对象__的关系,正如基本数据类型与该类型的变量一样,如int x;。 17、对一个类中的数据成员的初始化可以通过构造函数中的__赋值__实现,也可以通过构造 函数中的__初始化列表__实现。

18、类有两种用法:一种是_定义对象_,即生成类的对象;另一种是通过_派生,派生出新 的类。

19、C++语言提供的 多态_机制允许一个派生类继承多个基类,即使这些基类是相互无关 的。

20、声明虚函数的方法是在基类中的成员函数原型前加上关键字_virtual___。 21、如果一个类中有一个或多个纯虚函数,则这个类称为 虚基类_。 22、静态数据成员在定义或说明时,前面要加上关键字_static___。

23、如果成员函数不需要访问类的_非静态_成员,则可以把它声明为静态成员函数。 24、友元可以是_全局函数_,也可以是 其他成员函数 。

25、若需要把一个函数“void fun();”定义为一个类A的友元函数,则应在类A的定义中 加入一条语句:friend void fun()。

26、运算符函数中的关键字是_operator_,它和运算符_一起组成该运算符函数的函数名。

7

)。,用于从键盘上为变量输人值的标

27、类中运算符重载一般采用两种形式:_成员函数_和友元函数_。

28、面向对象程序设计的3大机制为:_封装性_、_继承性_和 多态性_。2、类的访问权限有 private、protected 和public三种。

29、构造函数是_对象___被创建时自动执行,对象消失时自动执行的成员函数称为_析构函数_。 30、如果类A继承了类B,则类A称为_派生类___,类B称为_基类___。

31、如果一个特定的类型S当且仅当它提供了类型T的行为时,则称类型S是类型T的_子类_。 32、在类定义中,将 =0 置于虚函数的函数原型的末尾可以声明该函数为纯虚函数。 33、类的静态成员分为静态数据成员和静态成员函数。

34、友元函数的声明可以放在类的私有部分,也可以放在类的公有部分,它们是没 有区别的。

35、如果说类B是类A的友元类,则类B的所有成员函数都是类A的成员函数。

36、设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变

量,我们用c+d的形式求这两个变量的和。显然运算符“+”具有不同的用途,这是运算符重载的例子。 37、当建立 新的对象 时,程序自动调用该类的构造函数。 38、 在C++中有二种参数传递方式:传值和引用。

39、 模板对处理数据的类型的要求不同可以分为两种类型:函数模板和类模板。 40、 异常是通过检查(try) 抛出(throw)和捕捉(catch)来实现的。 41、 虚函数实现了C++的 多态机制,类实现了C++的 封装机制。 42、 面向对象程序设计的继承机制提供了重复利用程序资源的一种途径。

三、问答题 (请以谭浩强版教材为重点,理解和掌握下列基本概念,做出简明

扼要的回答,内容自行翻书 )

1. 在C++中,结构(struct)和类(class)的区别是什么?

答:在c里结构体只能定义数据成员,不能有函数成员,但可以定义函数指针来模拟函数。在

C++中,结构体和类除了默认的访问方式和默认的继承方式不同外,其它都一样。结构体默认是公有,类默认是私有。

2. 构造函数和析构函数的主要作用是什么?

答:构造函数只是起初始化值的作用,但实例化一个对象的时候,可以通过实例去传递参数,

从主函数传递到其他的函数里面,这样就使其他的函数里面有值了。析构函数与构造函数的作用相反,用于撤销对象的一些特殊任务处理,可以是释放对象分配的内存空间。

8