福建工程学院C++试卷B.doc
《福建工程学院C++试卷B.doc》由会员分享,可在线阅读,更多相关《福建工程学院C++试卷B.doc(5页珍藏版)》请在冰豆网上搜索。
第1页
班级:
______姓名:
______学号:
______
福建工程学院2009--2010学年第二学期期末考试(B卷)共9页
课程名称:
面向对象程序设计考试方式:
开卷()闭卷(√)
题号
一
二
三
四
五
六
七
八
九
十
总分
统分人签名
得分
密封线
考生注意事项:
1、本试卷共9页,请查看试卷中是否有缺页。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
教师注意事项:
如果整门课程由一个教师评卷的,只需在累分人栏目签名,题首的评卷人栏目可不签名。
一、单项选择题(每小题2分,共30分)
得分
评卷人
1.重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(B)
A.作为友元函数重载的1元运算符
B.作为成员函数重载的1元运算符
C.作为友元函数重载的2元运算符
D.作为成员函数重载的2元运算符
2.在C++中把不返回任何类型的函数应该说明为(C)。
A.intB.char
C.voidD.double
3.要实现动态联编必须(D)。
A.通过成员名限定来调用虚函数B.通过对象名来调用虚函数
C.通过派生类对象来调用虚函数D.通过对象指针或引用来调用虚函数
4.在C++中,封装是借助(B)达到目的。
A.结构B.类
C.数组D.函数
第2页
5.假定AA是一个类,“AA*abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值(C)
A.已经被改变B.可能被改变
C.不变D.受到函数调用的影响
6.以下关于抽象类的描述,(D)是正确的。
A.不能说明抽象类的指针或引用
B.可以说明抽象类对象
C.抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出
D.抽象类的纯虚函数的实现由派生类给出
7.以下关于函数模板叙述正确的是(C)
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型
8.建立含有类对象成员的派生类对象时,其构造函数的执行顺序为(C)
A.自己所属类、对象成员所属类、基类的构造函数
B.对象成员所属类、基类、自己所属类的构造函数
C.基类、对象成员所属类、自己所属类的构造函数
D.基类、自己所属类、对象成员所属类的构造函数
9.构造函数不具备的特征是(D)
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
密封线
班级:
______姓名:
______学号:
______
第3页
10.实现两个相同类型数加法的函数模板的声明中(D)是正确的。
A.add(Tx,Ty)B.Tadd(x,y)
C.Tadd(Tx,y)D.Tadd(Tx,Ty)
11.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是(D)
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念。
12.若Sample类中的一个成员函数说明为voidset(Sample&a),则Sample&a的含义是(B)。
A.指向类Sample的名为a的指针
B.a是类Sample的对象引用,用来作函数Set()的形参
C.将a的地址赋给变量Set
D.变量Sample与a按位与的结果作为函数Set的参数
13.在(C)情况下适宜采用inline定义内联函数。
A.函数体含有循环语句B.函数体含有递归语句
C.需要加快程序的执行速度D.函数代码多、不常调用
14.this指针存在的目的是(B)。
A.保证基类公有成员在子类中可以被访问
B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C.保证基类保护成员在子类中可以被访问
D.保证基类私有成员在子类中可以被访问
15.类的析构函数是对一个对象进行(B)操作时自动调用。
A.建立B.撤消
C.赋值D.引用
第4页
二、填空题(每空1分,共20分)
得分
评卷人
1.带有_纯虚函数_的类称为抽象类,它只能作为___基类_____来使用。
2.同一个类的两个对象,其数据成员是不同的,但成员函数是共享的。
3.设在程序中使用如下语句申请了一个对象数组:
Point*ptr=newPoint[2];
则在需要释放ptr指向的动态数组对象时,所使用的语句是__delete[]ptr______。
4.对象传送的消息一般由3部分组成:
接收对象名、调用操作名和_必要的参数_______。
5.类成员的默认访问方式是私有。
6.类完成了面向对象程序设计的封装特性。
7.执行下列代码cout<<″Hex:
″<ff________。
8.C++的流库预定义了4个流,它们是cin、cout、cerr和clog。
9.类中运算符重载一般采用两种形式:
非静态成员函数和非成员函数。
10.基类的公有成员在私有派生类中是___私有_______成员,基类的保护成员在公有派生类中是__保护________成员。
11.对虚函数使用对象指针或引用,系统使用_动态_________联编,对虚函数使用对象调用时,系统使用____静态______联编。
12.将成员函数放在类外,所使用的作用域运算符为:
:
。
13.重载“<<”操作符时,应声明为___非成员_________函数。
14.所谓赋值兼容规则是指在公有派生情况下,一个___派生_____类的对象可以作为___基_____类的对象来使用的地方。
15.若y是x的引用,则对y的操作就是对___x___的操作。
密封线
班级:
______姓名:
______学号:
______
第5页
三、程序分析(每小题4分,共20分)
得分
评卷人
1.阅读程序,写出运行结果:
#include
classaa{public:
virtualintfunc(){return0;}};
运行结果:
58
0
classtest:
publicaa{
public:
intfunc(){return58;}
};
voidmain(){
testd;aa&b=d;
cout<cout<:
func()<}
2.阅读程序,写出运行结果:
#include
运行结果:
S1与S2的数据成员不相等
S1与S2的数据成员相等
template
classSample
{Tn;
public:
Sample(Ti){n=i;}
intoperator==(Sample&);
};
template
intSample:
:
operator==(Sample&s)
{if(n==s.n)return1;
elsereturn0;
}
voidmain()
{Samplesl
(2),s2(3);
cout<<″s1与s2的数据成员″<<(sl==s2?
″相等″:
″不相等″)<Samples3(2.5),s4(2.5);
cout<<″s3与s4的数据成员″<<(s3==s4?
″相等″:
″不相等″)<}
3.阅读程序,写出运行结果
#include
classA
{private:
intX,Y;
public:
A(){X=Y=0;
cout<<"DefaultConstructorcalled."< }
A(intxx,intyy){
X=xx;Y=yy;
cout<<"Constructorcalled."< }
~A(){cout<<"Destructorcalled."<运行结果:
DefaultConstructorcalled.
Destructorcalled.
Constructorcalled.
Destructorcalled.
};
voidmain()
{
A*p1=newA;
deletep1;
p1=newA(1,2);
deletep1;
}
密封线
班级:
______姓名:
______学号:
______
第7页
4.下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。
classMyClass{
intx