《2022年面向对象程序设计 3.docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计 3.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品_精品资料_系领导审批并签名A / B 卷广州高校 20222022 学年第 一 学期考试卷课程 面对对象程序设计 考试形式(闭卷,考试)学院系专业班级学号姓名题次一二三四五六七八九十总分 评卷人分数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使用成员函数或友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接.可编辑资料 - - - 欢迎下载