当前位置:文档之家› 福建工程学院C试卷试题B(附答案)

福建工程学院C试卷试题B(附答案)

int x=20,y;(这一句错,因为类内不能直接对数据成员初始化。可以将x定义为静态数据成员,再在类外初始化为20)
public:
MyClass(int aa,int bb);
int GetX();
int GetY();
};
5.下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。
class One{
5.类成员的默认访问方式是 私有。
6.类完成了面向对象程序设计的封装特性。
7.执行下列代码 cout <<″Hex:″<< hex << 255;程序的输出结果为Hex:ff________。
8.C++的流库预定义了4个流,它们是cin、cout、cerr和clog。
9.类中运算符重载一般采用两种形式:非静态成员函数和非成员函数。
B. 可以说明抽象类对象
C. 抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出
D. 抽象类的纯虚函数的实现由派生类给出
7. 以下关于函数模板叙述正确的是( C )
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
第1页
福建工程学院2009 --2010学年第二学期期末考试 (B卷)共 9 页
课程名称:面向对象程序设计考试方式:开卷()闭卷(√)
题号










总分
统分人签名
得分
考生注意事项:1、本试卷共9页,请查看试卷中是否有缺页。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
教师注意事项:如果整门课程由一个教师评卷的,只需在累分人栏目签名,题首的评卷人栏目可不签名。
}
~A() { cout<<"Destructor called."<<endl; }
};
void main()
{
A *p1=new A;
delete p1;
p1=new A(1,2);
delete p1;
}
第7页
4.下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。
class MyClass{
第8页
2.类Point中含有属性坐标x,y,要求能用disp成员函数输出坐标。设计一个友元函数distance,计算任意两点的距离。
3. 编写代码,模拟动物Animal的叫声。要求用多态技术实现。动物为Cat,Duck,Dog。
第 9 页
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.保证基类公有成员在子类中可以被访问
10. 基类的公有成员在私有派生类中是___私有_______成员,基类的保护成员在公有派生类中是__保护________成员。
11. 对虚函数使用对象指针或引用,系统使用_动态_________联编,对虚函数使用对象调用时,系统使用____静态______联编。
12.将成员函数放在类外,所使用的作用域运算符为::。
A. int B. char
C. void D. double
3.要实现动态联编必须( D )。
A.通过成员名限定来调用虚函数 B.通过对象名来调用虚函数
C.通过派生类对象来调用虚函数 D.通过对象指针或引用来调用虚函数
4.在C++中,封装是借助( B )达到目的。
A.结构B.类
C.数组D.函数
第2页
得分
评卷人
1.阅读程序,写出运行结果:
#include <iostream.h>
class aa { public: virtual int func () { return 0; } };
class test: public aa {
public: int func() { return 58; }
};
void main()
{ Two obj;
obj.setTwo(10);
cout<<"obj.a="<<obj.a<<endl;(这句错,因为无法直接访问保护数据成员。修改意见用紫色的修改)}
四、编程题(每题10分,共30分)
得分
评卷人
1.编写复数类Complexnumber,其属性为:real(实部),img(虚部)。完成复数的加法运算Add()和减法运算Sub()及对应的+运算符和-运算符重载。
2.同一个类的两个对象,其数据成员是不同的,但成员函数是共享的。
3.设在程序中使用如下语句申请了一个对象数组:
Point * ptr = new Point[2];
则在需要释放ptr指向的动态数组对象时,所使用的语句是__delete []ptr______。
4. 对象传送的消息一般
#include <iostream.h>
class A
{ private:
int X,Y;
public:
A() { X=Y=0;
cout<<"Default Constructor called."<<endl;
}
A(int xx,int yy) {
X=xx;Y=yy;
cout<< "Constructor called."<<endl;
一、单项选择题 (每小题2分,共30分)
得分
评卷人
1. 重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )
A.作为友元函数重载的1元运算符
B.作为成员函数重载的1元运算符
C.作为友元函数重载的2元运算符
D.作为成员函数重载的2元运算符
2.在C++中把不返回任何类型的函数应该说明为( C )。
{Sample<int>sl(2),s2(3);
cout<<″s1与s2的数据成员″<<(sl==s2 ?″相等″:″不相等″)<<endl;
Sample<double>s3(2.5),s4(2.5);
cout<<″s3与s4的数据成员″<<(s3==s4 ?″相等″:″不相等″)<<endl;
}
3.阅读程序,写出运行结果
B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C.保证基类保护成员在子类中可以被访问
D.保证基类私有成员在子类中可以被访问
15.类的析构函数是对一个对象进行( B )操作时自动调用。
A.建立 B.撤消
C.赋值 D.引用
第4页
二、填空题(每空1分,共20分)
得分
评卷人
1.带有_纯虚函数_的类称为抽象类,它只能作为___基类_____来使用。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
第3页
10.实现两个相同类型数加法的函数模板的声明中( D )是正确的。
A.add(T x,T y) B.T add(x,y)
C.T add(T x,y) D.T add(T x,T y)
11.C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( D )
5.假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值( C )
A.已经被改变 B.可能被改变
C.不变 D.受到函数调用的影响
6.以下关于抽象类的描述,( D ) 是正确的。
A. 不能说明抽象类的指针或引用
protected:int a;(将protected改为public)
public:void setOne(int x){a=x;}
void showOne(){cout<<"a="<<a<<endl;}
};
class Two:privateOne{(将private改为public)
public:void setTwo(int x){a=x;}
};
void main() {
test d; aa& b = d;
cout << b.func() << endl;
cout << b.aa::func() << endl;
}
2.阅读程序,写出运行结果:
#include <iostream.h>
template <class T>
class Sample
13. 重载“<<”操作符时,应声明为 ___非成员_________ 函数。
相关主题