A.10
B.20
C.30
D.不确定值
满分:
2分
正确答案:
C
12.友元重载运算符obj1>obj2被C++编译器解释为()。
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.obj1.operator>(obj2)
D.obj2.operator>(obj1)
满分:
2分
正确答案:
A
30.结构化程序设计方法以()为中心进行分析和设计。
A.结构
B.模块
C.对象
D.类
满分:
2分
正确答案:
B
14.已知“float*p;p=newfloat[2];”,若分配成功,则指针p在堆中获得的字节数为()。
A.2
B.4
C.8
D.不确定
满分:
2分
正确答案:
C
1.类对象占用内存的大小与()有关。
A.数据成员
B.成员函数
C.数据成员和成员函数
D.私有成员
满分:
2分
正确答案:
A
3.抽象类的作用主要是()。
A.直接用作基类
B.直接用作指针
C.引用的基类型
D.包括以上各项
满分:
2分
正确答案:
D
17.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。
A.派生类的对象可以直接访问基类的所有成员
B.派生类的对象可以初始化基类的引用
C.派生类的对象不可以直接访问基类中的私有成员
D.派生类的对象的地址可以赋给指向基类的指针
满分:
2分
正确答案:
A
18.在派生类中重新定义虚函数时,除了(),其他方面都应与基类中相应的虚函数保持一致。
A.函数名
B.参数
C.函数体
D.返回值类型
满分:
2分
正确答案:
C
19.基类的()在私有继承时在派生类中为私有成员函数,在公有和保护继承时在派生类中为保护成员函数。
A.私有成员函数
B.保护成员函数
C.公有成员
D.保护数据成员
满分:
2分
正确答案:
B
13.关于纯虚函数和抽象类的描述中,错误的是()。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现。
B.抽象类是指具有纯虚函数的类。
C.一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
D.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
满分:
2分
正确答案:
C
21.下列关于运算符重载正确的是()。
A.运算符重载可以改变运算符的操作数个数
B.运算符重载可以改变运算符的优先级
C.运算符重载可以改变运算符的结合性
D.运算符重载不可以改变语法结构
满分:
2分
正确答案:
D
22.将一个函数声明为某类的友元函数后,则在函数中不可以直接访问该类的()。
A.公有成员
B.私有成员
C.保护成员
D.都可访问
满分:
2分
正确答案:
D
23.假定MyClass为一类,执行MyClassa,b
(2),*p[2];语句时会自动调用该类构造函数()次。
A.2
B.3
C.4
D.5
满分:
2分
正确答案:
A
24.对A、B两个类进行多重继承得到派生类C,则创建派生类C的对象时,从基类B中继承过来的成员变量由()类的构造函数进行初始化。
A.A
B.B
C.C
D.都可以
满分:
2分
正确答案:
B
25.“#include”是()预处理命令。
A.宏定义
B.文件包含
C.条件编译
D.工程配置
满分:
2分
正确答案:
B
26.虚函数必须是类的()。
A.友元函数
B.成员函数
C.构造函数
D.析构函数
满分:
2分
正确答案:
B
10.在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
满分:
2分
正确答案:
C
28.静态数据成员初始化在()进行,而且前面不加static,以免与一般静态变量或对象相混淆。
A.类体内
B.类体外
C.构造函数内
D.内联函数内
满分:
2分
正确答案:
B
29.使用string类,必须在程序中包含头文件()。
A.string.h
B.string
C.cstring.h
D.cstring
满分:
2分
正确答案:
B
30.类MyClass的定义如下:
classMyClass{public:
MyClass(){value=0;}SetVariable(inti){value=i;}private:
intvalue;}则对下列语句序列正确的描述是()。
MyClass*p,my;p=&my;
A.语句p=&my;是把对象my赋值给指针变量p
B.语句MyClass*p,my;会调用两次类MyClass的构造函数
C.对语句*p.SetVariable(5)的调用是正确的
D.语句p->SetVariable(5)与语句my.SetVariable(5)等价
满分:
2分
正确答案:
D
26.多继承的构造函数顺序可分为如下4步:
①所有非虚基类的构造函数按照它们被继承的顺序构造。
②所有虚基类的构造函数按照它们被继承的顺序构造。
③所有子对象的构造函数按照它们声明的顺序构造。
④派生类自己的构造函数体这四个步骤的正确顺序是()。
A.④③①②
B.②④③①
C.②①③④
D.③④①②
满分:
2分
正确答案:
C
23.类aClass的定义如下:
classaClass{public:
aClass(){}aClass(inti){value=newint(i);}int*value;}若要对类中的value赋值,则下面的语句中,正确的是()。
A.aClassmy;my.value=10;
B.aClassmy;*my.value=10;
C.aClassmy;my.*value=10;
D.aClassmy(10);
满分:
2分
正确答案:
D
28.在一个类中,可以对一个操作符进行()重载。
A.1种
B.2种
C.3种
D.多种
满分:
2分
正确答案:
D
34.下列关于构造函数调用顺序的描述中,正确的是()。
A.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
B.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
C.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
D.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
满分:
2分
正确答案:
A
35.下列关于类和对象的叙述中,错误的是()。
A.一个类只能有一个对象
B.对象是类的具体实例
C.类是某一类对象的抽象
D.类和对象的关系是一种数据类型与变量的关系
满分:
2分
正确答案:
A
二、判断题(共15道试题,共30分)
1.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:
ABoperator+(AB&,AB&);
A.错误
B.正确
满分:
2分
正确答案:
A
8.在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。
A.错误
B.正确
满分:
2分
正确答案:
A
3.基类类型的指针可以指向其派生类对象。
A.错误
B.正确
满分:
2分
正确答案:
B
14.在C++程序中,有且仅能有一个主函数,且其函数名必须是main。
A.错误
B.正确
满分:
2分
正确答案:
B
6.在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。
A.错误
B.正确
满分:
2分
正确答案:
B
15.要使语句“MyClassa;”能够编译通过,必须在定义MyClass类时编写无参构造函数。
A.错误
B.正确
满分:
2分
正确答案:
A
2.构造函数不能被派生类继承。
A.错误
B.正确
满分:
2分
正确答案:
B
11.一个类的静态数据成员被该类的所有对象共享。
A.错误
B.正确
满分:
2分
正确答案:
B
4.C++语言类定义中默认的访问权限是public。
A.错误
B.正确
满分:
2分
正确答案:
A
7.在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。
A.错误
B.正确
满分:
2分
正确答案:
B
11.抽象类不能定义对象,但可以声明抽象类的指针或引用。
A.错误
B.正确
满分:
2分
正确答案:
B
5.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
A.错误
B.正确
满分:
2分
正确答案:
A
13.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。
A.错误
B.正确
满分:
2分
正确答案:
B
9.对虚函数的调用,