一、单选题(每题2分,共50分。)
1.下列有关运算符函数的描述中,错误的是()
A、运算符函数的名称总是以operator为前缀
B、运算符函数的参数可以是对象
C、运算符函数只能定义为类的成员函数
D、在表达式中使用重载的运算符相当于调用运算符重载函数
2.执行下列语句后的输出结果是()。
intcool=;
intrad=cool;
intcat=cool
cool+=;
coutrad”,”catendl;
A、,B、,
C、,D、,0
3.下列描述中,抽象类的特征有()。
A、可以说明虚函数B、可以构造函数重载
C、可以定义友员函数D、不能说明其对象
4.若要将类AClass定义为BClass的友元类,则应该在()类中定义。
A、AclassB、BClass
C、二个类中都应定义D、在两个类之外定义
5.用来说明类中公有成员的关键字是()。
A、public
B、private
C、protectedfriend
D、friend
6.下列关于构造函数的描述中,错误的是()。
A、构造函数可以设置默认参数;
B、构造函数在声明对象时自动执行;
C、构造函数可以对静态数据成员进行初始化;
D、构造函数可以重载;
7.若X是一个bool型变量,则X53的值()。
A、为trueB、为falseC、与X的值相同D、与X的值相反
8.类的析构函数是在()调用的。
A、类创建时B、创建对象时C、删除对象时D、不自动调用
9.关于new运算符的下列描述中,()是错误的。
A、它可以用来动态创建对象和对象数组
B、使用它创建的对象可以使用运算符delete删除
C、使用它创建对象时要调用构造函数
D、使用它创建对象数组时必须要指定初始值
10.main()函数可以访问派生类的对象中它的哪一类基类成员?()
A、公有继承的基类的公有成员B、公有继承的基类的保护成员
C、公有继承的基类的私有成员D、保护继承的基类的公有成员
11.有如下程序段:
inti=5;
while(inti=0){cout"*";i--;}
运行时输出“*”的个数是()
A、0B、2C、3D、5
12.从程序片断:inta=5;course(a);可判断函数course的调用采用的是()。
A、传值调用B、带缺省参数值的函数调用
C、引用调用D、传址调用
13.在C++语言中,能代表逻辑值“真”的是()。
A、0B、大于0的数或非0整数
C、非0整数D、非0的数
14.可以用p.b的形式访问派生类对象p的基类成员b,其中b是()。
A、私有继承的公有成员B、公有继承的私有成员
C、公有继承的保护成员D、公有继承的公有成员
15.执行下列语句后变量x和y的值是()。
y=15;x=y++;
A、x=15,y=15B、x=16,y=16
C、x=15,y=16D、x=16,y=15
16.动态内存分配的主要目的是()。
A、使程序按动态方式运行B、正确合理的使用内存
C、提高程序的运行速度D、提高程序的可读性
17.执行语句k=10;j=k++;后k和j的值分别为()。
A、k=10,j=10B、k=10,j=11
C、k=11,j=10D、k=11,j=11
18.友元关系不能()?
A、继承B、是类与类的关系
C、是一个类的成员函数与另一个类的关系D、提高程序的运行效率
19.如果一个类的成员函数read()不修改类的数据成员值,则应将其声明为()。
A、voidread()const
B、constvoidread();
C、voidconstread();
D、voidread(const);
20.在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用()。
A、内联函数B、重载函数C、递归调用D、嵌套调用
21.若:inta[4][5]={0};则下面正确的叙述是()。
A、只有元素a[0][0]可得到初值0
B、此说明语句不正确
C、数组a中各元素都可得到初值,但其值不一定为0
D、数组a中每个元素均可得到初值0
22.下面对静态数据成员的描述中,正确的是()。
A、静态数据成员由类的所有对象共享的
B、类的每一个对象都有自己的静态数据成员
C、类的不同对象有不同的静态数据成员值
D、静态数据成员不能通过类的对象调用
23.以下定义数组中错误的是()。
A、inta[10];
B、inta[2][20];
C、inta[20][];
D、inta[20];
24.c++语言类体系中,不能被派生类继承的有()。
A、转换函数B、构造函数C、虚函数D、静态成员函数
25.派生类中对基类的虚函数进行替换时,派生类中说明的虚函数与基类中的被替换的虚函数之间不要求满足的是()。
A、与基类的虚函数具有不相同的参数个数
B、其参数的类型与基类的虚函数的对应参数类型相同
C、派生类虚函数所返回的指针或引用的基类型是基类中被替换的虚函数所返回的指针或引用的基类的子类型
D、其返回值或者与基类的虚函数相同,或者都返回指针或引用
二、是非题(正确的填写“T”,错误的填写“F”。每题1分,共20分。)
1.使用new运算符创建对象数组时必须指定初始值。
2.类B从类A公有继承,则程序段Aa;Bb=a;不会引发编译错误。
3.delete运算符必须用于new返回的指针。
4.构造函数的功能是对对象进行初始化。
5.如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
6.子对象是类的一种数据成员,可以是自身类的对象。
7.对象数组的每个元素都是相同类的对象。
8.说明静态数据成员时前边要加修饰符static。
9.C++中的所有函数调用都是传值调用。
10.静态数据成员要在类体外进行初始化。
11.虚函数是为实现某种功能而假设的函数,派生类的虚函数定义影响其基类,而基类的虚函数定义不影响其派生类。
12.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为1次。
13.类的静态数据成员需要在定义每个类的对象时进行初始化。(
14.C++中,数组下标从1开始。
15.C++语言支持封装性和继承性,不支持多态性。
16.析构函数名可以与类名不同。
17.C++允许对字符串进行整体操作。
18.运算符重载是为了改变语法结构。
19.类B从类A公有继承,则程序段Aa;Bb=a;会引发编译错误。
20.inti,*p=i;上述语句是正确的。
三、问答题(每题15分,共30分。)
1.已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有GetPerimValue()函数计算对象的周长,并编写测试main()函数。
Shape抽象类定如下:
classShape{
public:
Shape(){}
~Shape(){}
virtualfloatGetPerimValue()=0;}
购买专栏解锁剩余2%