还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
大学考试试题纸(A卷)2007 -2008 学年第1学期 《面向对象程序设计》课程 计算机院(系) 班级考试时量100分钟学生人数 命题教师 系主任 交题时间 年 月 日 考试时间 年 月 日
一、简答题(每小题5分,共20分)什么是类?什么是对象?对象与类的关系是什么?构造函数和析构函数的主要作用是什么?他们各有什么特性?有哪几种继承方式?每种方式的派生类对基类成员的继承性如何?简要叙述友元运算符函数和成员运算符函数有什么不同点?
二、选择题(每小题2分,共20分)1.假设已经有定义constchar*pName=”Student”;下面的语句错误的是 A.pName
[3]=’t’; B.pName=”score”;C.pName=newchar
[5]; D.pName=newchar‘p’;
2.在下面有关对构造函数的描述中,错误的是 A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数可以带有参数D.构造函数可以缺省3.在下面有关析构函数特征的描述中,正确的是 A. 一个类中可以定义多个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数可以有一个或多个参数4.假定AB为一个类,则执行“AB a4b
[3]*p
[2];”语句时,自动调用该类构造函数的次数为 A.3 B.4 C.6 D.
95.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 A. ABoperator+AB aAB b B. AB operator+AB aC. operator+AB a D. AB operator+
6.假设定义了函数模版templateclassTTmaxTxTy{ returnxyx:y; }并定义了inti;charc;那么下列错误的调用该模版的是 A.maxii; B.maxcc;C.maxintci; D.maxci;7.模版的主要用途是为了 A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是 A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下#includeiostream.h#includeiomanip.hvoidmain{intkk=1234;coutsetfill‘*’setw6kkendl;coutkkendl;}以上程序的运行结果是 A.1234 B.**1234 C.**1234 D.以上都不对1234 1234 **123410.在公有继承的情况下,基类成员在派生类中的访问权限 A.受限制 B.保持不变 C. 受保护 D. 不受保护
三、填空题(每空1分,共10分)定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为
(1) 通常情况下,当创建派生类对象时,首先执行
(2) 的构造函数,随后再执行
(3) 的构造函数,当撤销派生类对象时,则先执行
(4) 的析构函数,随后再执行
(5) 的析构函数ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对
(6) 的操作来完成的所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用
(7) 来替代纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数那么,纯虚函数的定义形式为
(8) 分别写出类AB的单目运算符”++”的前缀方式和后缀方式的友元函数重载一般形式
(9) 、
(10)
四、写出下面程序的运行结果(每小题5分,共20分)
1、#includeiostream.h classBase{ public: Base{coutConstructingbaseclass\n;} ~Base{coutDestructingbaseclass\n;} }; classDerive:publicBase{public: Derive{coutConstructingderivedclass\n;}; ~Derive{coutDestructingderivedclass\n;}; private:Basea;}; voidmain{ Deriveop; }
2、#includeiostream.hclassBase{public: voidshow{ coutThisisBaseclassendl; }};classDerive:publicBase{public: voidshow{ coutThisisDerivedclassendl;}};voidmain{Baseobj*pBase;DeriveD_obj; pBase=obj;pBase-show;pBase=D_obj;pBase-show;}
3、#includeiostream.hintarr[]={2325272931};intget_valueinti{returnarr[i];}voidmain{ inti; coutget_value3endl; get_value2=50; fori=0;i5;i++ coutget_valuei” “;}
4、#includeiostream.hclasscomplex{public: complexintrinti:realrimagi{} friendcomplexoperator++complex; friendcomplexoperator--complex; voidprint{ coutrealimagendl; }private: intrealimag;};complexoperator++complexo{ o.real++; o.imag++; returno;}complexoperator--complexo{ o.real--; o.imag--; returno;}voidmain{ complexa12b34; ++a; a.print; --b; b.print;}
五、编程题(每小题10分,共30分)
1、建立一个Student类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员用new自动为Student的对象分配内存,并将学号“0504020101”,姓名“张三”,年龄20存入内存的相应域中,把该的信息显示出来
2、建立普通的基类building,用来存储一座楼房的层数、房间数以及它的总面积数建立派生类house,继承building,并存储下面的内容卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面在主程序中,分别建立对象显示各对象所有的数据成员
3、为Date类重载“+”运算符,实现在某一个日期上(年、月、日)加一个天数注请打印或用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,考试试题纸(A卷)2007 -2008 学年第1学期 《面向对象程序设计》 课程 计算机、网络专业 班级考试时量100分钟学生人数 命题教师 系主任 交题时间 年 月 日 考试时间 年 月 日
一、简答题(每小题5分,共20分)什么是类?什么是对象?对象与类的关系是什么?构造函数和析构函数的主要作用是什么?他们各有什么特性?有哪几种继承方式?每种方式的派生类队基类成员的继承性如何?简要叙述友元运算符函数和成员运算符函数有什么不同点?
二、选择题(每小题2分,共20分)1.假设已经有定义constchar*pName=”Student”;下面的语句错误的是 A.pName
[3]=’t’; B.pName=”score”;C.pName=newchar
[5]; D.pName=newchar‘p’;
2.在下面有关对构造函数的描述中,错误的是 A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数可以带有参数构造函数可以缺省3.在下面有关析构函数特征的描述中,正确的是 A. 一个类中可以定义多个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数可以有一个或多个参数4.假定AB为一个类,则执行“AB a4b
[3]*p
[2];”语句时,自动调用该类构造函数的次数为 A.3 B.4 C.6 D.
95.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 A. ABoperator+AB aAB b B. AB operator+AB aC. operator+AB a D. AB operator+
6.假设定义了函数模版templateclassTTmaxTxTy{ returnxyx:y; }并定义了inti;charc;那么下列错误的调用该模版的是 A.maxii; B.maxcc;C.maxintci; D.maxci;7.模版的主要用途是为了 A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是 A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下#includeiostream.h#includeiomanip.hvoidmain{intkk=1234;coutsetfill‘*’setw6kkendl;coutkkendl;}以上程序的运行结果是 B.1234 B.**1234 C.**1234 D.以上都不对1234 1234 **123410.在公有继承的情况下,基类成员在派生类中的访问权限 A.受限制 B.保持不变 C. 受保护 D. 不受保护
三、填空题(每空1分,共10分)定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为
(1) 通常情况下,当创建派生类对象时,首先执行
(2) 的构造函数,随后再执行
(3) 的构造函数,当撤销派生类对象时,则先执行
(4) 的析构函数,随后再执行
(5) 的析构函数ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对
(6) 的操作来完成的所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用
(7) 来替代纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数那么,纯虚函数的定义形式为
(8) 分别写出类AB的单目运算符”++”的前缀方式和后缀方式的友元函数重载一般形式
(9) 、
(10)
四、写出下面程序的运行结果(第1小题6分,第
2、3小题7分,共20分)
1、#includeiostream.h classBase{ public: Base{coutConstructingbaseclass\n;} ~Base{coutDestructingbaseclass\n;} }; classDerive:publicBase{public: Derive{coutConstructingderivedclass\n;}; ~Derive{coutDestructingderivedclass\n;}; private:Basea;}; voidmain{ Deriveop; }
2、#includeiostream.hclassBase{public: voidshow{ coutThisisBaseclassendl; }};classDerive:publicBase{public: voidshow{ coutThisisDerivedclassendl;}};voidmain{Baseobj*pBase;DeriveD_obj; pBase=obj;pBase-show;pBase=D_obj;pBase-show;}
3、#includeiostream.hclasscomplex{public: complexintrinti:realrimagi{} friendcomplexoperator++complex; friendcomplexoperator--complex; voidprint{ coutrealimagendl; }private: intrealimag;};complexoperator++complexo{ o.real++; o.imag++; returno;}complexoperator--complexo{ o.real--; o.imag--; returno;}voidmain{ complexa12b34; ++a; a.print; --b; b.print;}
五、编程题(每小题15分,共30分)
1、建立一个Student类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员用new自动为Student的对象分配内存,并将学号“0504020101”,姓名“张三”,年龄20存入内存的相应域中,把该的信息显示出来
2、建立普通的基类Animal,用来存储一座楼房的层数、房间数以及它的总面积数建立派生类house,继承building,并存储下面的内容卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面在主程序中,分别建立对象显示各对象所有的数据成员注请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,试题参考答案及评分细则(2007 -2008 学年第1学期)《面向对象程序设计》课程(A卷) 计算机 院(系) 班级应试学生人数 实际考试学生人数 考试时量 100分钟 命题教师 审核人 考试时间 年 月 日
一、简答题(每小题5分,共20分)1.答类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是数据+操作;类和对象之间的关系是抽象和具体的关系2.答构造函数主要用于为对象分配空间,进行初始化构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质
(1)构造函数的名字必须与类名相同
(2)构造函数可以有任意类型的参数但不能指定返回类型它有隐含的返回值该值由系统内部使用
(3)构造函数是特殊的成员函数函数体可写在类体内也可写在类体外
(4)构造函数可以重载即一个类中可以定义多个参数个数或参数类型不同的构造函数
(5)构造函数被声明为公有函数但它不能像其他成员函数那样被显式地调用它是在定义对象的同时被调用的析构函数也是一种特殊的成员函数它执行与构造函数相反的操作通常用于撤消对象时的一些清理任务如释放分配给对象的内存空间等析构函数有以下一些特点:
(1)析构函数与构造函数名字相同但它前面必须加一个波浪号~;
(2)析构函数没有参数也没有返回值而且不能重载因此在一个类中只能有一个析构函数;
(3)当撤消对象时编译系统会自动地调用析构函数3.答三种继承方式(公有public、保护protected、私有private);继承性可参见教材P1434.答
(1)对双目运算符而言成员运算符函数带有一个参数而友元运算符函数带有两个参数;对单目运算符而言成员运算符函数不带参数而友元运算符函数带一个参数
(2)双目运算符一般可以被重载为友元运算符函数或成员运算符函数但某些情况必须使用友元函数
二、选择题(每小题2分,共20分)1~10.A A B B B C C D B B
三、填空题(每空1分,共10分)
(1)AB::bb
(2)基类
(3)派生类
(4)派生类
(5)基类
(6)状态标志字
(7)公有派生类对象
(8)virtual函数类型函数名参数表=0;
(9)ABoperator++;
(10)ABoperator++int;
四、写出下面程序的运行结果(每小题5分,共20分)ConstructingbaseclassConstructingbaseclassConstructingderivedclassDestructingderivedclassDestructingbaseclassDestructingbaseclass2.ThisisBaseclass ThisisBaseclass3.29 23 25 50 29 314.23 34
五、编程题(每小题10分,共30分)略.注请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,考试试题参考答案及评分细则(2007 -2008 学年第1学期)《面向对象程序设计》课程(A卷) 计算机、网络专业 班级应试学生人数 实际考试学生人数 考试时量 100分钟 命题教师 审核人 考试时间 年 月 日
一、简答题(每小题5分,共20分)1.答类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是数据+操作;类和对象之间的关系是抽象和具体的关系2.答构造函数主要用于为对象分配空间,进行初始化构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质
(1)构造函数的名字必须与类名相同
(2)构造函数可以有任意类型的参数但不能指定返回类型它有隐含的返回值该值由系统内部使用
(3)构造函数是特殊的成员函数函数体可写在类体内也可写在类体外
(4)构造函数可以重载即一个类中可以定义多个参数个数或参数类型不同的构造函数
(5)构造函数被声明为公有函数但它不能像其他成员函数那样被显式地调用它是在定义对象的同时被调用的析构函数也是一种特殊的成员函数它执行与构造函数相反的操作通常用于撤消对象时的一些清理任务如释放分配给对象的内存空间等析构函数有以下一些特点:
(1)析构函数与构造函数名字相同但它前面必须加一个波浪号~;
(2)析构函数没有参数也没有返回值而且不能重载因此在一个类中只能有一个析构函数;
(3)当撤消对象时编译系统会自动地调用析构函数3.答三种继承方式(公有public、保护protected、私有private);继承性可参见教材P1434.答
(1)对双目运算符而言成员运算符函数带有一个参数而友元运算符函数带有两个参数;对单目运算符而言成员运算符函数不带参数而友元运算符函数带一个参数
(2)双目运算符一般可以被重载为友元运算符函数或成员运算符函数但某些情况必须使用友元函数
二、选择题(每小题2分,共20分)1~10.A A B B B C C D B B
三、填空题(每空1分,共10分)
(1)AB::bb
(2)基类
(3)派生类
(4)派生类
(5)基类
(6)状态标志字
(7)公有派生类对象
(8)virtual函数类型函数名参数表=0;
(9)ABoperator++;
(10)ABoperator++int;
四、写出下面程序的运行结果(第1小题6分,第
2、3小题7分,共20分)ConstructingbaseclassConstructingbaseclassConstructingderivedclassDestructingderivedclassDestructingbaseclassDestructingbaseclass2.ThisisBaseclass ThisisBaseclass3.23 34
五、编程题(每小题15分,共30分)略.注请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,。