福建工程学院C++试卷B.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date福建工程学院C+试卷B第 1 页 第 1 页班级:姓名:学号:福建工程学院2009 -2010学年第二学期期末考试 (B卷) 共 9 页 课程名称:面向对象程序设计 考试方式:开卷( )闭卷()题号一二三四五六七八九十总分统分人签名得分 密 封 线考生注意事项:1、本试卷共 9 页,请查看试卷中是否有缺页。 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。教师注意事项:如果整门课程由一个教师评卷的,只需在累分人栏目签名,题首的评卷人栏目可不签名。一、单项选择题 (每小题2分,共30分)得分评卷人 1. 重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符2. 在C+中把不返回任何类型的函数应该说明为( C )。A. int B. charC. void D. double3. 要实现动态联编必须( 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(T x,T y) B.T add(x,y)C.T add(T x,y) D.T add(T x,T y)11C+ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( D )A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念。12. 若Sample类中的一个成员函数说明为void set(Sample&a),则Sample&a的含义是( B )。A.指向类Sample的名为a的指针B.a是类Sample的对象引用,用来作函数Set()的形参C.将a的地址赋给变量SetD.变量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 = new Point2;则在需要释放ptr指向的动态数组对象时,所使用的语句是_delete ptr_ _。4. 对象传送的消息一般由3部分组成:接收对象名、调用操作名和_必要的参数_。5. 类成员的默认访问方式是 私有 。6类完成了面向对象程序设计的 封装 特性。7执行下列代码 cout <<Hex:<< hex << 255;程序的输出结果为Hex:ff_。8C+的流库预定义了4个流,它们是cin、cout、cerr 和clog。9. 类中运算符重载一般采用两种形式: 非静态成员函数 和 非成员函数 。10. 基类的公有成员在私有派生类中是_私有_成员,基类的保护成员在公有派生类中是_保护_成员。11. 对虚函数使用对象指针或引用,系统使用_动态_联编,对虚函数使用对象调用时,系统使用_静态_联编。12将成员函数放在类外,所使用的作用域运算符为 : 。13. 重载“<<”操作符时,应声明为 _非成员_ 函数。14. 所谓赋值兼容规则是指在公有派生情况下,一个_派生_类的对象可以作为_基_类的对象来使用的地方。15. 若y是x的引用,则对y的操作就是对_x_的操作。 密 封 线班级:姓名:学号: 第 5 页三、程序分析(每小题4分,共20分)得分评卷人 1.阅读程序,写出运行结果:#include <iostream.h>class aa public: virtual int func () return 0; ; 运行结果:580class test: public aa public: int func() return 58; ; void main() test d; aa& b = d; cout << b.func() << endl; cout << b.aa:func() << endl; 2.阅读程序,写出运行结果:#include <iostreamh>运行结果:S1与S2的数据成员不相等S1与S2的数据成员相等 template <class T> class Sample T n; public: Sample(T i)n=i; int operator=(Sample &); ; template <class T> int Sample<T>:operator=(Samples) if(n=s.n) return 1; else return 0; void main( ) 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. 阅读程序,写出运行结果#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; A( ) cout<<"Destructor called."<<endl; 运行结果:Default Constructor called.Destructor called.Constructor called.Destructor called.;void main()A *p1=new A;delete p1; p1=new A(1,2);delete p1; 密 封 线班级:姓名:学号: 第 7 页4. 下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。class MyClassint x=20,y;(这一句错,因为类内不能直接对数据成员初始化。可以将x定义为静态数据成员,再在类外初始化为20)public:MyClass(int aa,int bb);int GetX();int GetY(); ;5. 下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。class Oneprotected: int a;(将protected改为public)public: void setOne(int x)a=x;void showOne()cout<<"a="<<a<<endl;class Two:private One (将private改为public)public: void setTwo(int x)a=x;void main() Two obj;obj.setTwo(10);cout<<"obj.a="<<obj.a<<endl;(这句错,因为无法直接访问保护数据成员。修改意见用紫色的修改)四、编程题(每题10分,共30分)得分评卷人 1.编写复数类Complexnumber,其属性为:real(实部),img(虚部)。完成复数的加法运算Add()和减法运算Sub()及对应的+运算符和-运算符重载。第8页2. 类Point中含有属性坐标x,y,要求能用disp成员函数输出坐标。设计一个友元函数distance,计算任意两点的距离。3. 编写代码,模拟动物Animal的叫声。要求用多态技术实现。动物为Cat,Duck,Dog。 密 封 线班级:姓名:学号: 第 9 页-