当前位置:文档之家› 最新福建工程学院C++试卷B

最新福建工程学院C++试卷B

第1页 福建工程学院2009 --2010学年第二学期期末考试 (B 卷) 共9页考试方式:开卷()闭卷考生注意事项:、本试卷共 页,请查看试卷中是否有缺页。

2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。

教师注意事项:如果整门课程由一个教师评卷的,只需在累分人栏目签名,题首的评卷 人栏目可不签名。

C .数组D .函数第2页5. 假定AA 是一个类,“AA* abc ()const; ”是该类中一个成员函数的原型,若该函数返回this 值,当用x.abc ()调用该成员函数后,x 的值(C ) A.已经被改变 B. 可能被改变 C.不变D.受到函数调用的影响 6.以下关于抽象类的描述,(D A. 不能说明抽象类的指针或引用 B. 可以说明抽象类对象) 是正确的。

、单项选择题(每小题2分,共30分)1. 重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(B )A. 作为友元函数重载的1元运算符B. 作为成员函数重载的1元运算符C. 作为友元函数重载的2元运算符D. 作为成员函数重载的2元运算符2. 在C++中把不返回任何类型的函数应该说明为( C)。

A. i ntB. char3. 要实现动态联编必须(D A. 通过成员名限定来调用虚函数 C.通过派生类对象来调用虚函数4. 在C++中,封装是借助(B A •结构 B .类C. 抽象类的纯虚函数的实现可以由自身给出,也可以由派生类给出D. 抽象类的纯虚函数的实现由派生类给出7. 以下关于函数模板叙述正确的是(C ) A. 函数模板也是一个具体类型的函数B. 函数模板的类型参数与函数的参数是同一个概念C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数D. 用函数模板定义的函数没有类型8. 建立含有类对象成员的派生类对象时,其构造函数的执行顺序为(C ) A. 自己所属类、对象成员所属类、基类的构造函数 B •对象成员所属类、基类、自己所属类的构造函数C •基类、对象成员所属类、自己所属类的构造函数 D.基类、自己所属类、对象成员所属类的构造函数9. 构造函数不具备的特征是(D ) A. 构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置默认参数 D. 构造函数必须指定类型说明第3页C. voidD. double)0 B. 通过对象名来调用虚函数 D.通过对象指针或引用来调用虚函数)达到目的。

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 )A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念。

12. 若Sample类中的一个成员函数说明为void set(Sample&a),贝U 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. 设在程序中使用如下语句申请了一个对象数组:Poi nt * ptr = new Poi nt[2] ;则在需要释放ptr指向的动态数组对象时,所使用的语句是__delete []ptr_。

4. 对象传送的消息一般由3部分组成:接收对象名、调用操作名和_必要的参数_______ O5. 类成员的默认访问方式是私有°6. ______________________________ 类完成了面向对象程序设计的封装特性。

7 .执行下列代码cout << 〃Hex:〃<< hex << 255 ;程序的输出结果为Hex:ff____________ °8. C++的流库预定义了4个流,它们是cin、cout、cerr 和clog °9. 类中运算符重载一般采用两种形式:—非静态成员函数和非成员函数。

10. 基类的公有成员在私有派生类中是—私有__________ 员,基类的保护成员在公有派生类中是—保护__________ 员。

11. ________________________________________________ 对虚函数使用对象指针或引用,系统使用一动态___________________________ 编,对虚函数使用对象调用时,系统使用____ 静态______ 编。

12•将成员函数放在类外,所使用的作用域运算符为」__________________ 。

13. 重载“<<”操作符时,应声明为—非成员_____________ 函数。

14. 所谓赋值兼容规则是指在公有派生情况下,一个—■派生 _____ 的对象可以作为 _基______ 的对象来使用的地方。

15. 若y是x的引用,则对y的操作就是对_x___的操作。

三、程序分析(每小题4分,共20分)1•阅读程序,写出运行结果: #in elude <iostream.h> class aa { public: virtual int func () { retur n 0; } };class test: public aa { public: int fun c() { retur n 58; } };void mai n() { test d; aa& b = d;cout << b.f un c() << en dl;cout << b.aa::f un c() << en dl;2•阅读程序,写出运行结果:#in clude <iostreamtemplate <class T>class Sample{ T n ;public : Sample(T i){ n=i;}int operator==(Sample &)};template <class T>int Sample<T>::operator==(Sample{ if(n==s.n) return 1 ;else return 0 ;}void mai n(){ 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. 阅读程序,写出运行结果#in clude <iostream.h>class A{ private:int X,Y;public:A( ) { X=Y=0;cout<<"Default Con structor called."<<e ndl;}A(int xx,i nt yy) {X=xx;Y=yy;cout<< "Con structor called."<<e ndl;}运行结果: 58运行结果:S1与S2的数据成员不相等S1与S2的数据成员相等& s)~A( ) { cout«"Destructor called."«endl; } }; void mai n(){A *p 仁new A; delete p1; p1=new A(1,2); delete p1;}第7页4. 下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。

class MyClass{int x=20,y;(这一句错,因为类内不能直接对数据成员初始化。

可以将x定义为静态数据成员,再在类外初始化为20)public:MyClass(i nt aa,i nt bb);int GetX();int GetY();};5. 下面程序中有一处错误,请用下横线标出错误所在行并提出修改意见。

class One{protected : int a; (将protected 改为public )public: void set On e(i nt x){a=x;}void show On e(){cout<<"a="<<a<<e ndl;}};class Two: private One{ (将private 改为public )精品文档public: void setTwo(i nt x){a=x;} };void mai n(){ Two obj;obj.setTwo(10);cout<v"obj.a="vvobj.avve ndl; (这句错,因为无法直接访问保护数据成员修改意见用紫色的修改)}四、编程题(每题10分,共30分)1. 编写复数类Complexnumbe,其属性为:real (实部),img (虚部)。

完成复数的加法运算Add ()和减法运算Sub()及对应的+运算符和-运算符重载。

第8页2. 类Point中含有属性坐标x,y,要求能用disp成员函数输出坐标。

相关主题