《面向对象程序设计 3.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计 3.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结系领导审批并签名A / B 卷广州高校 20072021 学年第 一 学期考试卷课程 面对对象程序设计 考试形式(闭卷,考试)学院系专业班级学号姓名题次一二三四五六七八九十总分 评卷人分数20204020100评分一、 填空题( 20 分)1、是特殊的成员函数,在对象作用域终止时自动调用。2、友元关系是非传递的和,除非特殊声明,否就,通常情形下如F 是 A的友元, AF的友元。3、运算符函数既可以重载为 函数,也可以重载为友元函数。4、在具有继承关系的类层次结构中,构造函数的执行次序是:、 、。5、具有纯虚函数的类称为。6、 Windows 应用程序的主窗口一般都是 类的派生类
2、,而窗口函数就被封装到 类中。7、 MFC是用消息映射表来实现消息与之间的映射的,MFC通过可编辑资料 - - - 欢迎下载精品名师归纳总结 个宏来声明和实现消息映射表。8、 MFC 采纳结构来实现数据和数据显示的分别。应用程序的数据是由文档类 对象来储备和治理。9、 CPaintDC 是 类 中最常用的派 生类, 它只能 使用在 类 的OnDraw函数中。10、消息的消息响应函数的函数名为OnMouseMove。11、是供 Windows应用程序使用的特殊数据,它们驻留在硬盘上的可执行文件中。常用的资源有、快捷键、图标、位图等。12、 就是指应用程序把数据对象以文件的形式写入永久性储备体后,
3、应用程序仍能从永久性储备体来读取它,并且可以依据该文件在内存中重新创建该对象的机制。二、简述题( 20 分,每题 5 分)(1) Windows应用程序的主函数有哪 3 个主要任务 . 什么是消息循环 .(2) 简述文档 / 视图结构中文档类和视图类的作用。并说明在文档/ 视可编辑资料 - - - 欢迎下载精品名师归纳总结图结构的应用程序中,视图类的对象是如何来猎取文档类对象中的数据的。(3) )应用程序的界面有哪三种方式?分别说明该界面应用程序的外观。4 鼠标消息分为哪两类?它们之间有什么区分?三、阅读以下程序,写出执行结果。(40 分,每题 5 分) 1、#include classcou
4、nterpublic:voidsetnum inti num = i。 voidshownum cout num t。 可编辑资料 - - - 欢迎下载精品名师归纳总结staticintnum 。intcounter : num = 1。void maininti。for i = 0。 i 5。 i + counter:num += i。cout counter:num t。 coutendl 。2、#include class Apublic:Aa=5。void printacoutA :a=aendl。private:int a。friend class B。 。可编辑资料 - - - 欢
5、迎下载精品名师归纳总结class Bpublic:void display1A tt.a+ 。 coutdisplay1: a=t.aendl。 void display2A tt.a- 。 coutdisplay2:a=t.aendl。 。void main A obj1 。 B obj2 。obj1.printa。obj2.display1obj1。obj2.display2obj1。obj1.printa。3、#include template class basepublic:baseT i,T jx=i 。 y=j。 T sumreturn x+y。 private: T x,y。可
6、编辑资料 - - - 欢迎下载精品名师归纳总结 。void main base obj23.3,5.5。coutobj2.sumendl。base obj13,5。coutobj1.sumendl。4、#include class Basepublic: void abccoutBase classendl。 。 。class Derived1: public Basepublic: void abccoutDerived1 classendl。 。 。class Derived2: public Basepublic: void abccoutDerived2 classabc 。p=&ob
7、j2。 p-abc 。p=&obj3。 p-abc 。obj1.abc。 obj2.abc。 obj3.abc。5、#include classparent_classintprivate1 , private2。public:parent_class intp1 ,intp2 private1 = p1。 private2 = p2。 intinc1 可编辑资料 - - - 欢迎下载精品名师归纳总结intinc2 return+ private1。 return+ private2。 可编辑资料 - - - 欢迎下载精品名师归纳总结voiddisplay cout private1= pri
8、vate1 , private2= private2 endl。 。classderived_class :privateparent_classintprivate3。可编辑资料 - - - 欢迎下载精品名师归纳总结parent_class private4。public :derived_class intp1 ,intp2 ,intp3 ,intp4 ,int p5 : parent_class p1 , p2 , private4 p3 , p4 private3 = p5。 可编辑资料 - - - 欢迎下载精品名师归纳总结intinc1 intinc3 returnparent_cl
9、ass : inc1 。 return+ private3。 可编辑资料 - - - 欢迎下载精品名师归纳总结voiddisplay parent_class : display 。 private4.display 。cout private3= private3 endl。 。void main derived_class d1 17 , 18 , 1 , 2 , -5 。d1 . inc1 。d1 . display 。6、#includeclass Apublic :Aint n i=n 。 cout “初始化 i 的值为: ” get_in。可编辑资料 - - - 欢迎下载精品名师归
10、纳总结A cout释“放 A 的对象。 ” n。int get_i return i 。 private: int i 。 。class B:public A public:Bintn,intm:Anj=m。cout “初 始 化j的 值为: ” get_jn 。 Bcout释“放 B 的对象。 ” n。int get_j return j 。 private: int j 。 。void mainB obj1,2 。cout “创建了一个 B 的对象。值为:” obj.get_i“”n。obj.get_j7、#include class A public:virtual void act1
11、。可编辑资料 - - - 欢迎下载精品名师归纳总结void act2 act1 。 。void A:act1coutA:act1 called. endl 。 class B : public Apublic:void act1。 。void B:act1cout B:act1 called. endl。void mainB b 。b.act2。8、指出以下程序中的错误,并说明理由class COMPLEXpublic:COMPLEXdouble r=0, double i=0 。COMPLEX operator-const COMPLEX & other 。COMPLEX operator=
12、const COMPLEX & other 。private:double real=0, image=0。 。void mainfloat x 。COMPLEX y10,20, z2,3, sum。sum= x-y。可编辑资料 - - - 欢迎下载精品名师归纳总结sum=sum-z。sum-。四、编程题:( 20 分,每题 10 分) 1使用虚函数编程求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle 作为基类。在 circle 类中定义一个数据成员 radius 和两个虚函数 area 和 volume 。由 circle 类派生 spher
13、e类和 column 类。在派生类中对虚函数 area 和 vlume 重新定义,分别求球体和圆柱体的体积及表面积。补充指定部分。#includeconst double PI=3.14。class circlepublic:circledouble rradius=r 。/补充此处protected:可编辑资料 - - - 欢迎下载精品名师归纳总结double radius。 。class sphere:public circlepublic:spheredouble r:circlerdouble areareturn 4.0*PI*radius*radius。 double volume
14、return 4.0*PI*radius*radius*radius/3.0 。可编辑资料 - - - 欢迎下载精品名师归纳总结 。class column: public circle/补/充此处可编辑资料 - - - 欢迎下载精品名师归纳总结 。void mainint a,b,c 。circle *p 。cout输入球体半径 a。可编辑资料 - - - 欢迎下载精品名师归纳总结sphere sobja。p=&sobj 。cout球体的体积 =/补充此处cout球体的表面积 /补充此处cout输入圆柱体的半径 ,高bc。column cobjb,c。p=&cobj 。cout圆柱体的体积 =volumeendl 。cout圆柱体的表面积 =areaendl。2使用成员函数或友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接。可编辑资料 - - - 欢迎下载