面向对象程序设计 试卷a_第1页
面向对象程序设计 试卷a_第2页
面向对象程序设计 试卷a_第3页
面向对象程序设计 试卷a_第4页
面向对象程序设计 试卷a_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 A卷)东莞理工学院(本科)试卷( 2012 -2013学年第二学期 面向对象程序设计试卷 : 业 入场 开课单位: 计算机学院,考试形式:闭卷,允许带专 级 年 题序 封 一 二 三四 五 六 分总 得分 评卷人 :别分,请将正确答案填写在以下302分,共一单项选择题 (15小题,每小题系 )对应的答题表格中 题号 _ _ _ _ _ _ _ _ _ 系 :密号学 线 :名姓1 23 4 5 6 78 9 10答案 题号 11 12 13 14 15答案 _ _ _ _ _ )1、在类定义的外部,可以被访问的成员有( _ _ _ _ B、private的类成员 A、所有类成员密 _:号_学C

2、、public或private的类成员 D、public的类成员 2、下列关于C+语言类的描述中错误的是( ) 。 A 、类用于描述事物的属性和对事物的操作 线 B、 类与类之间通过封装而具有明确的独立性 C、 类与类之间必须是平等的关系,而不能组成层次结构 :名D、 类与类之间可以通过一些方法进行通信和联络 姓3、下列数组定义中,不正确的是( )。 A、 int x13; B、 int x22=1,2,3; C、 int x2=1,2,3,4 ; D、 int x2=1,2,3,4 4、定义析构函数时,应该注意:( ) A、其名与类名完全相同 B、返回类型是void类型 C、无形参,也不可重

3、载 D、函数体中必须有delete语句 5、下列函数中,正确的递归函数是( )。 A 、int Fun(int n) if(n1) return 1; else return n*Fun(n+1); B 、int Fun(int n) if (abs(n)1) return 1; else return n*Fun(n*2); D、 int Fun(int n) if(n1) return 1; else return n*Fun(n-1); 6、在C+中编译器所生成的文件的扩展名为( )答案修改过 A、 .cpp B、 .obj C、 .lib D、 .exe 7、派生类的对象对它的基类成员

4、中的( )是可以访问 A、公有继承的公有成员 B、公有继承的私有成员 C、公有继承的保护成员D、私有继承的公有成员 8. C+设置虚基类的目的是( ) A、消除二义性 B、简化程序 C、提高运行效率 D、减少目标代码 9. 以下关于this指针的叙述中正确的是:( ) A、任何与类相关的函数都有this指针; B、类的成员函数都有this指针; C、类的友员函数都有this指针; D、类的非静态成员函数才有this指针; 10实现运行时的多态性采用( ) A、重载函数 B、构造函数 C、析构函数 D、虚函数 11、若有int a10=0,1,2,3,4,5,6,7,8,9,*p=&a5;则(

5、) 不是对a数组元素的正确引用(其中0i10) A、pi B、 *(*(p+i) ) C、ap-a D、* (&ai) 12、int Func(int,int);不可与下列哪个函数构成重载( ) A、int Func(int,int,int); B、double Func(int,int); C、double Func(double,double); D、double Func(int,double); 13、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用( )提供对全局变量的访问。 【内层隐藏外层】 A 、域运算符 B、指针 C、重载 D、引用 14下列描述中,正确

6、的是:( ) A、所有的运算符号都可以重载。 继承public【只有、基类类型的指针可以指向子类,子类类型的指针也可以指向基类。B前一个说法才成立】 、可以在类体内对静态数据成员进行初始化。【必须类外初始化】 C D、动态联编要满足两个条件:被调用的成员函数是虚函数;用指针或引用调用虚函数。 15、下面类的定义,有( )处错误。 class MyClass : 业专 private: int i=0; 2级年 public: void MyClass(); 3 MyClass(int Value); 4 封 1 、 4D、A、 1 B 2 C 、3 :别系 分)20(每题2分,共二填空题 的。

7、static加在局部变量定义前,改变局部变量的生存期但不改变它 作用域1、 函数访问。2. 类的私有成员只能被它的成员函数和 友元 。一个抽象类的派生类可以实例化的必要条件是实现了所有的 纯虚函数3. ;时AB *a10=&a1,&a2的两个对象a1,a2;则执行语句AB4、假定为一个类,有类AB 。系统自动调用该类的构造函数的次数为 0 机制,可以扩充和完善已有类以适应新的需求。 继承和派生语言中类的5、通过C+ : 【答案修改过】密号学 。内联函数 6. 若在类的定义体中给出了一个成员函数的完整定义,则该函数属于 。7. 不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为 多

8、态 线 。 和多态性 、8. 对象的核心概念就是通常所说的 继承 封装 : 名姓 个析构函数。在一个类中可以定义 1 9. 、若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后10 关键字。 面加上 const 分)分,共5小题,每小题210。(错的打三判断题,对的打TF ) (函数形参的作用域是该函数的函数体。1. 2. 纯虚函数必须在抽象类中,所以抽象类中的成员函数必须是纯虚函数。( ) 3. 派生类中至少包含了它的所有基类的成员,在这些成员中可能有的是不可访问。( ) 答案修改过 4. 可以在类的构造函数中对静态数据成员进行初始化。( ) 5. 构造函数和析构函数

9、都可以定义为虚函数。()。 四程序填空(每题6分,共18分) 根据程序的功能描述,将程序下划线空白处内容补充完整(每空白3分) 阅读下面是一段关于类的派生的程序,请完成填空。1. ”,请填空。counter,对其重载运算符“+以下程序是定义一个计数器类 class counter private: int n; :public : counter() n=0; 业 counter(int i)n=i; 专级的三维数组的一段8x9x8 面是动态创建一个 counter operator +(counter &c) 年 程序,请按提示完成填空。 #include 封 using namespace

10、 std; int main() 程序1 float *cp=new float*8;:别 #include 系 using namespace std; class base public: static int n; base(int x) n=x; virtual void set(int m) n = m; cout n ; ; int base:n=0; class deriveA:public base :号 public: 密学 deriveA(int x):base(x) 线 void set(int m) n += m; cout n ; ; class deriveB:pu

11、blic base public: deriveB(int x):base(x) void set(int m) n +=m; cout n set(1); 封 pbase-base:set(0); pbase = &d2; pbase-set(1); : pbase-base:set(3);别 coutendl; return 0; :2 0 1 3输出结果 2 2. 程序 #include using namespace std; class Base1 public: int i; Base1(int x) i=x;cout Constructing Base1 i endl; ; cl

12、ass Base2: public Base1 public: Base2(int j): Base1(j) cout Constructing Base2 j endl; ; class Base3 public: Base3() cout Constructing Base3 * endl; ; class Derived: public Base2, public Base3 public: int h; Derived(int a, int b, int c, int d): member2(d), member1(c), Base2(b) h=a; private: Base1 me

13、mber1; Base2 member2; Base3 member3; ; int main() Derived obj(1, 2, 3, 4); return 0; 输出结果: Constructing Base1 2 Constructing Base2 2 Constructing Base3 * Constructing Base1 3 Constructing Base1 4 Constructing Base2 4 Constructing Base3 * 六、程序设计(12分) 定义一个抽象类Stereo,函数Volume为纯虚函数,用来计算体积。由抽象类分别派生出立方体Cub

14、e类、球体Sphere类、圆柱体Cylinder类,并求其体积(其中球体的体积公式为 V=4/3*PI*R*R*R)。各立体形状的相关数据成员(其中:r代表半径,l代表长度,w代表宽度,h代表高度)属性都为private,并且通过各类的构造函数设置。total是一个通用的,用以求不同立体形状的体积总和的全局函数。 1)定义和实现各个类,给出相关的成员数据、构造函数和必要的成员函数即可。(4分,每个类1分) 2)定义和实现total函数,注意该函数为全局函数不是某各类的成员函数。 (4分) 3)编写main函数进行测试,功能要求如下:a、用基类指针数组,使它的每一个元素指向一个派生类的对象,并且

15、所有形状立方体对象都进行内存动态分配和回收(即用new和delete操作符);b、主函数内调用total输出所有形状立方体的体积之和。(4分) 注:主函数中用到的构造函数和total函数如下 Cube,; /实参为立方体的长、宽、高。 Sphere; /实参为球体的半径。 Cylinder,; /实参为圆柱体的底面半径、高。 total(s,3);/ 实参s为基类指针数组,3为数组的大小。 #include using namespace std; class Stereo public: virtual float Volume(void)=0; class Cube:public Ster

16、eo public: Cube( float l=1,float w=1,float h=1 ):l(l),w(w),h(h) float Volume(void) return l*w*h; private: float l,w,h; ; class Sphere:public Stereo public: Sphere( float r=1 ):r(r) float Volume(void) return 4/3*r*r*r; private: float r; ; class Cylinder:public Stereo public: Cylinder( float r=1, float h=1 ):r(r),h(h) flo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论