C++复习题及答案

更新时间:2024-05-20 18:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、选择题

1、关于C++与C语言关系的描述中,(D )是错误的。 A C语言是C++语言的一个子集 B C语言与C++语言是兼容的 C C++语言对C语言进行了一些改进 D C++语言和C语言都是面向对象的 2、下列说法中不正确的是( C)。 A 对象是类的一个实例

B 任何一个对象只能属于一个类 C 一个类只能有一个对象

D 类与对象间的关系和数据类型与变量间关系相类似

3、当将一个类A或函数f( )说明为另一个类B的友元后,类A或函数f( )能够直接访问类B的( D )。

A 只能是公有成员

B 只能是保护成员

C 只能是除私有成员之外的任何成员 D 任何权限的成员 4、(B )是析构函数的特征。

A 析构函数在对象创建时调用 B 一个类中只能定义一个析构函数 C 析构函数的定义只能在类体内

D 析构函数可以有一个或多个参数

5、要声明一个有10个int型元素的数组,正确的语句是(A ) A int a[10] B int a[2,5] C int a[] D int *a[10]

6、如果变量x,y已经正确定义,下列语句哪一项不能正确将x,y的值进行交换( D)。

A x=x+y,y=x-y,x=x-y B t=x,x=y;y=t C t=y,y=x,x=t D x=t,t=y,y=x

7、假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( D)。

A x.a

B x.a() D x.GetValue()

C x->GetValue()

8、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A)。

A 内联函数 C 递归调用

B 重载函数 D 嵌套调用

9、设int *p,i; 以下正确的语句是( C) A *p=&10 B i=p C i=*p D p=2*p+1 10、静态数据成员的初始化必须在(B )。

A 类内

B 类外

D 静态成员函数内

C 在构造函数内

11、当一个函数无返回值时,定义它的函数类型应是(A )。 A void C 任意 A public

B int D 无

12、在下列关键字中,用于说明类中公有成员的是(A)。

B private

D friend B main( )函数 D 注释

C protected

A 第一行 C 头文件

13、C++程序的执行总是从哪里开始的(B )。

14、(D)不是构造函数的特征。

A 构造函数的函数名与类名相同 B 构造函数可以重载 C 构造函数可以设置缺省参数 D 构造函数必须指定类型说明 15、面向对象方法的多态性是指(C )。

A 一个类可以派生出多个特殊类

B 一个对象在不同的运行环境中可以有不同的变体

C 针对同一消息,不同的对象可以以适合自身的方式加以响应 D 一个对象可以是由多个其他对象组合而成的 A 大小写字母 C 连接符

B 下划线 D 数字字符

16、按照标识符定义的要求,(C )符号不能组成标识符。

17、若类X是类Y的友元类,则下列哪种访问关系是正确的(B )。

A 类X的成员不能访问类Y的私有成员 B 类X的成员可以访问类Y的私有成员 C 类Y的成员可以访问类X的私有成员 D 只有类Y的公共成员才能访问类X的私有成员

18、如果编程者没有显式定义构造函数(包括复制构造函数),C++编译器就( D)。

A 出现编译错误 C 必须显示定义

B 没有构造函数

D 隐式定义缺省的构造函数

19、关于成员函数特征的下述描述中,哪个是错误的( A)。

A 成员函数一定是内联函数

B 成员函数可以重载

C 成员函数可以设置参数的缺省值 D 成员函数可以是静态的 20、静态成员函数仅能访问(A )。

A 静态的数据成员

B 非静态的数据成员

C 非静态的成员函数 A ABC C a_bc

D 以上都不对 B abc D ab.c

21、以下不正确的C++标识符是(D )。

22、抽象类是(A )。 A 不可以定义对象 B 可以定义对象 C 不可以派生新类 D 不可以输出

23、在c++中,一个虚函数是通过下列哪个关键字放在其基类说明的前面来加以说明的(A )。

A virtual C operator

B protected D this

24、在定义int a[5][4];之后,对a的引用正确的是( C)。 A a[2][4] B a[5][0] C a[0][0] D a[0,0] 25、在一个类的定义中,包含对什么成员的定义(C )。

A 数据

B 函数

D 数据或函数

C 数据和函数

26、在计算机上可以直接运行的程序是(D ) 。

A C++源程序

B 高级语言程序

C 汇编语言程序 D 机器语言程序

27、下面描述中,表达错误的是( B )。

A.公有继承时基类中的public成员在派生类中仍是public的 B.公有继承时基类中的private成员在派生类中仍是private的 C.公有继承时基类中的protected成员在派生类中仍是protected的 D.私有继承时基类中的public成员在派生类中是private的

28、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A )。

A 内联函数 C 递归调用

B 重载函数 D 嵌套调用

29、下列对派生类的描述中,错误的是(D )。 A.一个派生类可以作另一个派生类的基类 B.派生类至少有一个基类

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

D.派生类中继承的基类成员的访问权限到派生类保持不变

30、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(D )。

A 基类、自己所属类、对象成员所属类 B 自己所属类、对象成员所属类、基类 C 对象成员所属类、基类、自己所属类 D 基类、对象成员所属类、自己所属类

二、填空题

1、在C++中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。

2、在C++中,用数组、指针和引用作为函数参数,能够将参数值带回。

3、如果类A继承了类B,则类A称为派生类(或子类),类B称为基类(或父类)。 4、面向对象程序设计有四大特征,它们是抽象、封装、继承、多态。 5、C++中可以有许多相同名称,但参数类型或个数不同的成员函数,称为函数重载。 6、请写出与数学表达式5/9(F-32)相对应的C++表达式5.0/9.0*(F-32)。

7、构造函数是对象被创建时自动执行。一个类有可以多个构造函数,可以有一个析构函数。 8、动态关联需要满足的两个条件,它们是所调用的函数是虚函数,用指针或引用调用该虚函数。

9、类的成员的访问权限有public、protected和private三种。 10、x *= y+8等价于x=x*(y+8)。

11、类的静态成员分为静态数据成员和静态成员函数。 12、友元可以是友元函数,也可以是友元类。

13、声明类的静态成员用关键字static,声明类的友元函数用关键字friend。

14、在C++中,一个派生类可以从一个基类派生称为单继承;也可以从多个基类派生,称为多重继承。无论按哪种方式继承,基类的private(私有)成员在派生类中始终是不可访问的。 15、在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;在基类和派生类中,成员函数的覆盖是指派生类中的函数覆盖了基类中的同名函数。

16、类作用域运算符“::”的作用用来指明哪个函数属于哪个类或哪个数据属于哪个类。 17、面向对象方法的多态性是指针对同一消息,不同的对象可以以适合自身的方式加以响应。多态的实现分为两类编译时多态和运行时多态(或 静态多态; 动态多态)。 18、类的静态数据成员是类的所有对象共享的成员。

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

20、请写出与数学表达式4/3πR3相对应的C++表达式4.0/3*3.14*R*R*R。 21、在C++中,函数参数的两种传递方式分别是 值 传递和 地址 传递。

22、一个 类 和 对象 的关系,正如基本数据类型与该类型的变量一样,如int x;。 23、在一个类中定义常数据成员用关键字const,定义静态数据成员用关键字static。 24、在C++中,为对象申请空间时用new,而撤消对象时释放内存空间则用delete。 25、在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问;基类的私有成员对于派生类而言是不可访问。 三、判断题

1. 类中所提供的成员函数可以直接访问私有成员。T

2. 字符串是用单引号括起来的若干字符。F 3. 构造函数和析构函数都不能重载。F 4. 静态成员变量每个对象都有一份拷贝。F 5. 子类可以改造从父类继承的成员。T

6. 说明或定义对象时,类名前不需加class关键字。T 7. 运算符重载就是赋予尚未有的运算符多种运算的功能。F 8. 使用关键字class定义的类中缺省的访问权限是公有的。F 9. 显式类型转换可以把一个变量转换成另外一种数据类型。T 10. 友元函数的声明不受访问区域的影响。T 11、构造函数和析构函数都可以重载。F 12、C++的源程序可以直接在计算机上运行。F

13、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。F

14、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。F

15、字符串是用双引号括起来的一个或多个字符。T 16、子类可以继承父类的所有成员。F 17、抽象类不可以继承,只能派生。F

18、使用new申请的内存,在程序执行结束时,必须使用delete释放。T

19、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。T 20、多态的实现分为两类:编译时的多态和运行时的多态。T 21、发生函数调用时,只能把实参的值传递给形参。F 22、类A是类B的友元,则类B一定是类A的友元。F 23、a*b是合法的C++标识符。F

24、可以在类的构造函数中对静态数据成员进行初始化。F

25、protected和private区别在于:protected成员可以被派生类访问,而private成员则不能被派生类访问。T

26、构造函数和析构函数都可以重载。F

27、使用关键字class定义的类中缺省访问权限是私有(private)的。T 28、成员运算符描述的是对象和成员之间的关系。T

29、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用函数重载。F 30、如果有以下定义,int a=10,*ptr=&a; 则变量ptr的值为10。F 四、阅读程序写结果 1、

#include using namespace std;

inline float fmax(float x,float y) { }

return x>y?x:y;

本文来源:https://www.bwwdw.com/article/gah7.html

Top