c++面向对象的程序.doc_第1页
c++面向对象的程序.doc_第2页
c++面向对象的程序.doc_第3页
c++面向对象的程序.doc_第4页
c++面向对象的程序.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

面向对象编程技术试卷(A)一、单项选择题(130=30分)1结构化的程序设计方法描述不正确的是()A 设计思路是自顶向下、逐步求精B 程序结构:按功能划分为若干个基本模块,形成一个树状结构C 能够有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护D 可重用性好2在函数定义前加上关键字inline,表示该函数被定义为_。 A 重载函数 B 内联函数 C 成员函数 D 普通函数 3下列标示符,( )是合法的A -page; B _lock; C 3in1; D mail。4设void f1(int &x,char * p);int m;char s =c+;以下调用合法的是( )。A f1(&m,&s) B f1(&m,s) C f1(m,s) D f1(m,&s)5. 数组定义为 int a23 = 1,2,3,4,5,6;, 则表达式*(a1+2)值为( )。A、3 B、4 C、5 D、66、 假定Person为一个类,则执行Person p1, p2(“tom”),*p3;语句时,自动调用该类构造函数_次。 A 2 B 3 C 4 D 5 7 对类的构造函数和析构函数描述正确的是_。 A 构造函数可以重载,析构函数不能重载 B 构造函数不能重载,析构函数可以重载 C 构造函数可以重载,析构函数也可以重载 D 构造函数不能重载,析构函数也不能重载 8关于抽象描述不正确的是_。 A 数据抽象描述某类对象的属性或状态。B 代码抽象描述某类对象的共有的行为特征或具有的功能。C 抽象说明OOP方法更注重问题的实现过程而不注重问题的本质描述。D 抽象最终通过类的声明来实现9不能实现函数之间数据传递的是_。 A 全局变量 B 局部变量 C 静态变量 D 函数返回值10 假定Cat 为一个类,则该类的拷贝初始化构造函数的声明语句为_。 A Cat &(Cat x); B Cat (Cat &x) C Cat (Cat x); D Cat (Cat *x)11 为了使类中的某个成员不能被类的对象通过成员操作符访问, 则不能把该成员的访问权限定义为_。 A public B protected C private D static12 类的析构函数的作用是_。 A 一般成员函数 B 类的初始化 C 对象的初始化 D 对象被删除时的清理工作13对于常数据成员,下面描述正确的是_。 A 常数据成员可以不初始化,并且不能更新 B 常数据成员必须被初始化,并且不能更新 C 常数据成员可以不初始化,并且可以被更新 D 常数据成员必须被初始化,并且可以被更新14 对于下面定义的类Point,在函数f()中将对象成员x,y的值修改为5,6的语句应该是_。Class Pointpublic:Point(int x1=0, int y1=0) x = x1; y = y1void SetPosition (int x1, int y1) x = x1; y = y1private:int x;int y;voidf()Point *ptr = new Point(4,5);_ A Point(5,6) B ptr- Point (5,6) C ptr- SetPosition (5,6) D ABC都可以。 15对下列语句正确的描述是_。 Const int *x;_/int *const x;_/ A 语句的含义是指针变量x不能更改 B 语句的含义是指针变量x所指向的值不能更改 C 语句的含义是指针变量x不能更改 D 语句和是相同含义的不同定义方式 16对于常成员函数,下面描述正确的是_。 A 类的成员函数可以操作常对象 B 类的成员函数不能操作常对象 C 只有常成员函数可以操作常对象 D 在常成员函数中,常对象可以被更新 17关于new运算符的错误的描述是_。 A)使用运算符new创建对象数组时必须定义初始值 B)使用运算符new创建对象时,会调用类的构造函数 C)运算符new可以用来动态创建对象和对象数组 D)使用new运算符创建的对象可以使用运算符delete删除18下面_的叙述不符合赋值兼容规则。 A)派生类的对象可以赋值给基类的对象 B)基类的对象可以赋值给派生类的对象 C)派生类的对象可以初始化基类的引用 D)派生类的对象的地址可以赋值给指向基类的指针 19一个类的友元函数或友元类能够通过成员操作符访问该类的_。 A)私有成员 B)保护成员 C)公用成员 D)所有成员20下列关于友元的描述中,错误的是_A.友元函数可以访问该类的私有数据成员 B.一个类的友元类的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承21下面对静态数据成员的描述中,正确的是_。 A)静态数据成员可以在类体内进行初始化 B)静态数据成员不可以被类的对象调用 C)静态数据成员不能受private控制符的作用 D)静态数据成员可以直接用类名调用22使用指针动态申请数组 float10259语句应是 A. float (*fp)1025=new float259; B. float *fp=new float10259; C. float (*fp)259=new float10259; D. float *fp=new float259;23下列说法中错误的是_。 A.公有继承时基类中的public成员在派生类中仍是public的 B.公有继承时基类中的private成员在派生类中仍是private的 C.私有继承时基类中的public成员在派生类中是private的 D.保护继承时基类中的public成员在派生类中是protected的 24. 下列运算中, _运算符在C+中不能重载。A. ?: B. + C. D. =25派生类的构造函数的成员初始化列表中,不能包含_。 A.基类的构造函数 B.派生类中子对象的初始化 C.基类中子对象的初始化 D.派生类中一般数据成员的初始化 26 C+类体系中,不能被派生类继承的有_。 A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数 27 _是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。 A.虚析构函数 B.虚构造函数 C.纯虚函数 D.静态成员函数 28在C+中, 对虚基类构造函数的调用_普通基类的构造函数. A.总是先于 B.总是后于 C.按自然顺序 D.按对象声明顺序29以下哪个基类中的成员函数表示纯虚函数_A. virtual void vf(int) B. void vf(int )=0 C. virtual void vf()=0 D. virtual void yf(int30. 在下列说法中,正确的是_。 A. 静态成员函数不能利用this指针 B. 只有非静态成员才可以使用this关键字,因为静态成员没有this指针 C. 构造函数和析构函数不接受任何参数,也不带有任何类型的返回值 D. 虚机制在析构函数中仍然可以很好地工作,以实现多态性答案及评分标准一、 选择题(每题1分,共35分)评分标准:总分35分。每答对1题,得1分;答错或不答均不得分。1.D 2.B 3.B 4.C 5.D 6.A 7.A 8.C 9.B 10.B 11.A 12.D 13.B 14.C 15.C16.C 17.A 18.B 19.D 20.D 21.D 22.C 23.B 24.A 25.C 26.A 27.C 28.A 29.C 30.D二、 填空题(每空1分,共20分)评分标准:总分20分。每答对1空,得1分;答错或不答均不得分。1. OOD, OOP, OOT 2. 指针P 指针p指向的对象3. 块作用域 类作用域4. 封装 继承5. 数据成员 函数成员6. 友元函数7. 参数类型 参数个数 函数名8. public private protected 或者 公有 私有 保护9. this 当前对象三、 判断题(每题1分,共10分)1.对 2.对 3. 对 4. 错 5. 对 6.错 7.错 8.对 9.错 10.对四、 读程题(每题 3分 共6分)评分标准:答案不完全,酌情扣分;答错或不答均不得分。1B0:display( )B1:display( )D1:display( )2Constructor A! 5Constructor B! 0Constructor A! 6Constructor B! 7Destructor B! 7Destructor A! 6Destructor B! 0Destructor A! 5五、 简答题(每题4分,共8分)评分标准:答案不完全,酌情扣分;答错或不答均不得分1. 多态性指是同样的消息被不同类型的对象接收产生不同的行为;运行时的多态通过定义虚函数来实现。2. 浅拷贝只是简单的复制,而深拷贝则是复制资源。六 编程题1评分标准:答案不完全未实现题目全部要求,以及存在错误酌情扣分;满足题目全部要求给满分。#include #include string.hclass studentpublic:student(char *sno1=000,char * sname1=NoName,int sage1=0) /形参不对扣一分,没有默认形参值扣一分sno = new char8;sname = new char8;strcpy(sno,sno1);strcpy(sname,sname1);sno = sno1;sname = sname1;sage = sage1;SNum +; /没有 SNum +;扣一分student(student & s) /拷贝构造函数格式不正确扣一分sno = new char; /没有实现深拷贝扣两分sname = new char;strcpy(sno,s.sno);strcpy(sname,s.sname);sage = s.sage;SNum +; /没有 SNum +;扣一分student() /析构函数不正确扣一分SNum-; /没有 SNum -;扣一分delete sno;delete sname;char *GetSno() / 函数不正确扣一分 return sno; char *GetSname() / 函数不正确扣一分 return sname; int GetSage() / 函数不正确扣一分return sage;void Set(char *sno1,char * sname1,int sage1) / 函数不正确扣一分sno = new char8;sname = new char8;strcpy(sno,sno1);strcpy(sname,sname1);sno = sno1;sname = sname1;sage = sage1;void show() / 函数不正确扣一分cout学号:sno姓名:sname年龄:sage学生数:SNumendl;private:char * sno,* sname;int sage;static int SNum; / 静态成员不正确扣一分;int student:SNum = 0; / 初始化不正确扣一分void main() student s1(001,tom,25); /主函数不正确扣两分student s2(s1);s2.Set(002,Jack,25);s1.show();s2.show();2class GS: public student / 继承不正确扣一分 public:GS(char *sno1,char * sname1,int sage1,char *SD,char * DN): / 构造函数不正确扣一分 student(sno1,sname1,sage1) / 参数传递不正确扣一分 SDirection = new char10;DName = new char10;SDirection = SD;DName = DN;GS(GS & gs):student(gs) / 拷贝构造函数不正确扣两分SDirection = new char; /没有实现深拷贝扣两分DName = new char;strcpy(SDirection,gs.SDirection);strcpy(DName,gs.DName);GS()delete SDirection;delete DName;void show() / 函数不正确扣一分student:show();cout研究方向:SDirection导师姓名:DNameendl;private:char *SDirection,char * DName;void main() /主函数不正确扣两分GS gs1(003,peter,26,math,zhang);GS gs2(gs1);gs1.show();gs2.show();二、填空题(20空,120=20分)1. 面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括OOA、_、_、_、OOSM。2. 指针定义 char * const p 表示_是常量;指针定义 const char * p 表示_是常量。3. C+的作用域有:函数原型作用域、_、_、文件作用域。4. 类的四个基本特点是抽象、_、_、多态。5. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的_,共同行为被描述为类中的_。6. 非成员函数应声明为类的_才能访问这个类的private成员。7. 重载函数时通过关键词constant以及_和_来区分, 重载函数具有相同的_。8. 派生类对基类的继承有三种方式: _、_ 和_。9. 在C+语言中,每个类都有一个隐含的指针叫做_指针。该指针指向_。三判断题(110=10 10分)1一个类中析构函数有且只有一个。 ( )2面向对象的观点认为自然界是由实体(对象)所组成,而实体的特征分为静态特征和动态特征,即属性和行为。 ( )3当基类中声明有默认形式的构造函数或未声明构造函数时,派生类构造函数可以不向基类构造函数传递参数。 ( )4在面向对象的方法中,通过封装,可以大大提高程序的可重用性。 ( )5对对象成员的构造函数的调用顺序取决于这些对象成员在类中说明的顺序,与它们在成员初始化列表中给出的顺序无关.( ) 6. 一个类不可以定义多个对象 ( )7. 运算符重载可以改变操作数的个数 ( ) 8. 函数void sum(int a=0) 不能作为void sum(int a) 的重载函数 ( )9. 派生类的对象对它的基类成员中公有继承的私有成员是可以访问 ( )10. 纯虚函数是一种特殊的虚函数,它没有具体的定义 ( )四、读程题(每小题3分,共6分)1.写出下面程序运行的结果#includeclass B0 public:virtual void display ( ) coutB0:display( )endl;class B1:public B0 public:void display ( ) coutB1:display ( )endl;class D1:public B1 public void display ( ) coutD1:display ( )display ( ); void main( ) B0.b0;B1.b1;D1.d1;B0 *p;P=&b0;fun(p) p=&b1;fun(p);p=&d1;fun(p);2. .写出下面程序运行的结果# include class A int a;public: A(int aa=0) a=aa;cout C

温馨提示

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

评论

0/150

提交评论