2020年C++语言程序程序设计阶段性检测复习题
2020阶段测试2 复习题
1.已知Stu类,则当程序执行语句 Stu array[2]; 时,调用了(C )次无参构造函数。
A、 0 B、1 C、2 D、3
2.对于动态分配内存空间描述正确的是 ( D )
A、使用new运算符分配的内存空间的长度必需是常量
B、delete运算符可以释放动态的存储空间和静态的存储空间
C、由new分配的内存空间是不连续的
D、delete运算符只能释放由new分配的动态存储空间
3.可以在类外用p.b的形式访问派生类对象p的基类成员b,其中b是( D)。
A、私有继承的公用成员
B、公用继承的私有成员
C、公用继承的保护成员
D、公用继承的公用成员
4.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( C )
A、派生类的对象可以赋给基类的对象
B、派生类的对象可以初始化基类的引用
C、派生类的对象可以直接访问基类中的成员
D、派生类的对象的地址可以赋给指向基类的指针
5.定义类的动态对象数组时,系统只能够自动调用该类的( A )构造函数对其进行初始化。
A、无参 B、带一个参数
C、带n个参数 D、带指定参数
6.下列关于虚基类的描述,错误的是( B )
A、设置虚基类的目的是为了消除二义性
B、虚基类的构造函数在非虚基类之后调用
C、若同一层中包含多个虚基类,这些基类的构造函数按它们说明的次序调用
D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
7.对使用关键字new所开辟的动态存储空间,释放时必须使用( C )
A、free B、create C、delete D、realse
8.以下叙述中不正确的是: ( D )
A、在不同的函数中可以使用相同名字的变量
B、函数中的形参是局部变量
C、在一个函数内部定义的变量只在本函数范围内有效
D、在一个函数内部定义的变量在所有函数内部都可以访问
9.下列对于类的描述错误的是(C )
A、类要先声明后使用
B、类是具有唯一标识的实体
C、两个类可以使用同一个名称
D、组成类的不仅有数据,还可以有对数据进行操作的函数
10.如果有int x,*p; float y,*q;则下面操作正确的是 ( C )
A、p=x
B、p=q
C、p=&x
D、p=&y;
11.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是( A)
A、编译器总是自动创建一个不带参数的构造函数
B、这个类没有构造函数
C、这个类不需要构造函数
D、该类不能通过编译
12.关于动态联编的描述中,( D )是错误的。
A、 动态联编是以虚函数为基础的
B、 动态联编是在运行时,确定所调用的函数代码的。
C、 动态联编调用函数操作是指向对象的指针或对象引用。
D、 动态联编是在编译时确定操作函数的。
13.下面的语句中错误的是( B )
A、int x=5;int a[x];
B、const int x=5;int x[a];
C、int n=5;int *p=new int[a];
D、const int n=5;int *p=new int[a];
14.下面对静态数据成员的描述中,正确的是( D )
A、静态数据成员可以在类体内进行初始化
B、静态数据成员不可以被类的对象调用
C、静态数据成员不能受private控制符的作用
D、静态数据成员可以直接用类名调用
15…在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( C )
A、派生类的对象可以赋给基类的对象
B、派生类的对象可以初始化基类的引用
C、派生类的对象可以直接访问基类中的成员
D、派生类的对象的地址可以赋给指向基类的指针
16.已知Person q;下面哪种情况不会调用复制构造函数 ( D )
A、Person p(q); B、void Fun(Person p); 函数被调用时
C、Person p = q; D、void Fun(Person &p); 函数被调用时
17.下列关于虚基类的描述,错误的是( B )
A、设置虚基类的目的是为了消除二义性
B、虚基类的构造函数在非虚基类之后调用
C、若同一层中包含多个虚基类,这些基类的构造函数按它们说明的次序调用
D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
18.对于"int *pa[5];"的描述中,( A )是正确的。
A、pa是一个指向数组的指针,所指向的数组是5个int型元素
B、pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C、pa [5]表示某个元素的第5个元素的值
D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针
19.在下列表示引用的方法中,( A )是正确的。
已知:int m=10;
A、int &x=m; B、int &y=10;
C、int &z; D、float &t=&m;
20.有关析构函数的说法,不正确的是( B )。
A、析构函数有且仅有一个
B、析构函数和构造函数一样可以有形参
C、析构函数的功能是在系统释放对象之前作一些内存清理工作
D、析构函数无任何函数类型
21.下面有关重载函数的说法中正确的是( C )
A、重载函数必须具有不同的返回值类型;
B、重载函数形参个数必须不同;
C、重载函数必须有不同的形参列表 (
D、重载函数名可以不同;
22.关于虚函数的描述中,( A )是正确的。
A、 虚函数是一个非satatic类的成员函数。
B、 虚函数是一个非成员函数。
C、 基类中说明了虚函数后,派虚函数是以不必说明为虚函数。
D、 派生类的虚函数与基类的虚函数具有不同的参数个数和类型。
23.关于构造函数,下列说法不正确的是( D )。
A、构造函数名字和类名相同
B、构造函数在创建对象时自动执行
C、构造函数无任何函数返回类型
D、构造函数有且只有一个
24.下列关于抽象类的使用中,( A )是错误的。
A、可以定义抽象类的对象 B、可以定义抽象类的指针
C、可以定义抽象类的引用 D、可以定义抽象类的派生类
25.在一个被调用函数中,关于return语句使用的描述,( D )是错误的。
A、被调用函数中可以不用return语句
B、被调用函数中可以使用多个return语句
C、被调用函数中,如果有返回值,就一定要有return语句
D、被调用函数中,一个return语句可以返回多个值给调用函数
26.已知:类A中一个成员函数说明如下:
void Set(A&a);
其中,A&的含义是( C )。
A、指向类A的指针为a
B、将a的地址值赋给变量Set
C、a是类A对象的引用,用来作函数Set()的参数
D、变量A与a按位与作为函数Set( )的参数
27.关于new运算符的下列描述中,( D)是错的。
A、它可以用来动态创建对象和对象数组
B、使用它创建的对象和对象数组可以使用运算符delete删除
C、使用它创建对象时要调用构造函数
D、使用它创建对象数组时必须指定初始值
28.下列关于类的权限的描述错误的是( A )
A、类本身的成员函数只能访问自身的私有成员
B、类的对象只能访问该类的公有成员
C、普通函数不能直接访问类的公有成员,必须通过对象访问
D、一个类可以将另一个类的对象作为成员
29.类定义的内容允许被其对象无限制地存取的是( C )。
A、private 部分 B、protected 部分
C、public 部分 D、以上都不对
30.若数组名作实参而指针变量作形参,函数调用时实参传给形参的是 ( B )。
A、 数组的长度
B、 数组第一个元素的值
C、 数组所有元素的值
D、 数组第一个元素的地址
31.对于动态分配内存空间描述正确的是 ( D )。
A、使用new运算符分配的内存空间的长度必需是常量
B、delete运算符可以释放动态的存储空间和静态的存储空间
C、由new分配的内存空间是不连续的
D、delete运算符只能释放由new分配的动态存储空间
32.能够释放对象所占资源的是 (A )
A、析构函数 B、数据成员
C、构造函数 D、静态成员函数
33.下面对静态数据成员的描述中,正确的是( D )
A、静态数据成员可以在类体内进行初始化
B、静态数据成员不可以被类的对象调用
C、静态数据成员不能受private控制符的作用
D、静态数据成员可以直接用类名调用
34.关于构造函数特点的描述中,错误的是 ( D )
A、 定义构造函数必须指出类型
B、 构造函数的名字与该类的类名相同
C、 一个类中可定义0至多个构造函数
D、 构造函数是一种成员函数
35.通常的拷贝构造函数的参数是 ( C )
A、本类对象名 B、本类对象成员名 C、本类对象的引用 D、本类对象的指针名
36.关于常数据成员的说法,不正确的是( B )。
A、常数据成员的定义形式与一般常变量的定义形式相同,只不过常数据
成员的定义必须出现在类体中
B、常数据成员必须进行初始化,并且不能被更新
C、常数据成员通过构造函数的成员初始化列表进行初始化
D、常数据成员可以在定义时直接初始化
37.下列选项中,与实现运行时多态性无关的是( A )。
A) 重载函数 B) 虚函数 C) 指针 D) 引用
38.有以下程序 ( A )
void main()
{
int a[2][3],*p,i;
p=&a[0][0];
for(i=0;i<6;i++)
p[i]=i;
for(i=0;i<3;i++)
cout << *(p+i);
}
程序运行后的输出结果是:
A)012 B)123 C)234 D)345
39.如果一个类至少有一个纯虚函数,那么就称该类为( A )。
A、抽象类 B、派生类 C、纯基类 D、以上都不对
40.运用运算符delete删除一个动态对象时( C )。
A、系统首先为该动态对象调用构造函数,再释放其占用的内存
B、系统首先释放该动态对象占用的内存,再为其调用构造函数
C、系统首先为该动态对象调用析构函数,再释放其占用的内存
D、系统首先释放动态对象占用的内存,再为其调用析构函数
41.派生类对象的构造顺序是先调用: ( B )
A、派生类的构造函数
B、基类的构造函数
C、内嵌对象的构造函数
D、无参构造函数
42.一个类可包含析构函数的个数是( B )
A、0个
B、1个
C、至少一个
D、0个或多个
43.this指针存在的目的是( B )
A、保证基类公有成员在子类中可以被访问
B、保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C、保证基类保护成员在子类中可以被访问
D、保证基类私有成员在子类中可以被访问
44.下列特性中不是面向对象程序设计语言所特有的是( D )。
A、数据封装 B、继承C、多态性 D、模板
45.通过一个常对象能调用它的( A )。
A、常成员函数 B、所有成员函数
C、static修饰的函数 D、该类的无参函数
46.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( B )。
A、函数的返回值类型 B、参数的类型 C、函数名称 D、参数个数
47.下列函数中,(C )不能重载。
A、 成员函数 B、 非成员函数 C、 析构函数 D、 构造函数
48.派生类可以访问其基类的( D )。
A、公有成员 B、保护成员
C、私有派生 D、公有和保护成员
49.在int a=3,int *p=&a;中,*p的值是( D )
A、变量a的地址值 B、无意义
C、变量p的地址值 D、3
50.在公有继承的情况下,基类非私有成员在派生类中的访问权限( B )
A、 受限制 B、保持不变 C、受保护 D、不受保护
51.下面描述中,表达错误的是( B )
A、公有继承时基类中的public成员在派生类中仍是public的
B、公有继承是基类中的private成员在派生类中仍是private的
C、公有继承时基类中的protected成员在派生类中仍是protected的
D、私有继承时基类中的public成员在派生类中是private的
52.定义析构函数时,应该注意( C )
A、其名与类名完全相同
B、返回类型是 void 类型
C、无形参,也不可重载
D、函数体中必须有 delete 语句
53.通常复制构造函数的参数是: ( C )
A、对象 B、对象的成员 C、本类对象的引用 D、对象的指针
54.C++中要实现动态联编,必须使用( D )调用虚函数 。
A.类名 B、派生类指针 C、对象名 D、 基类指针