还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
系领导A/B审批并署名卷广州大学学年第一学期考试卷2023〜2023课程面向对象程序设计考试形式(闭卷,考试)学院系专业班级学号姓名题次四五六七八九十总分评卷人—•-分数20204020100评分填空题(20分)
1、是特殊的成员函数,在对象作用域结束时自动调用
2、友元关系是非传递的和,除非特别声明,否则,通常情况下若F是A的友元,AF的友元
3、运算符函数既可以重载为__函数,也可以重载为友元函数
4、在具有继承关系的类层次结构中,构造函数的执行顺序是二_、、O
5、具有纯虚函数的类称为o
6、Windows应用程序的主窗口一般都是类的派生类,而窗口函数则被封装到^类中
7、#i nc ludeiostre am.h class A{pub lievi rt ua1void a c t1;void act2{a c tl;;v oid A::a ctl{cou t«A::actl c ailed.«end1;}c1a ssB:p ublic A{publi c:void act1;;v oid B:act1{cou t«B:a ctlc alle d.e ndl;}voi d main{Bb;b.act2;
8、指出下列程序中的错误,并说明理由class COMPLEX{p ublicCOMPLEXd oubl e r=0,d oub1e i=0;COMPLEX ope rat or-co n st COMP LEXo ther;C0MPLEX operator=c ons t COMPLEXothe r;pr i va t ed oub1e real=0,im age=0;};void mai n{f Ioa tx;^COMPLEX y10,20,z2,3,sum;4u m=x-y;u m=sum-z;s um--;
四、编程题(20分,每题10分)
1.使用虚函数编程求球体和圆柱体的体积及表面积由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类在ci rc le类中定义一个数据成员rad ius和两个虚函数a rea和v olume由circle类派生sph ere类和column类在派生类中对虚函数aroe a和v1ume重新定义,分别求球体和圆柱体的体积及表面积补充指定部分#i nc1u dei os tream.hc onstdouble PI=
3.14;c1ass circle{publi c:cir cled o ub1e r{r adius=r;}//补充此处prot ect e d:double r adi us;;c1a sssphe re:pub1i ccirc1e{publi c:spheredouble r:circler{}do ublearea{retur n
4.0*PI*radius*radius;}d oublev o1um e{retu rn
4.0*PI*ra d ius*radius*radius/
3.0;};class c o lumnp ub1i ccir cle//补充此处;vo idmai n{int a,b,c;c ire1e*p;cou t«输入球体半径«endl;c in»a;s phe resob ja;p=s obj;cou t球体的体积二”«//补充此处cout”球体的表面积=«〃补充此处c ou t输入圆柱体的半径,高endl;c i nb»c;column cob j b,c;p=cobj;8111圆柱体的体积=^-丫0111171©©1111;c out圆柱体的表面积=p-areaVe n dl;}
2.使用成员函数或友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接
7、MFC是用消息映射表来实现消息与之间的映射的,MFC通过_个宏来声明和实现消息映射表
8、MFC采用结构来实现数据和数据显示的分离应用程序的数据是由文档类对象来存储和管理
9、CPaintDC是类中最常用的派生类,它只能使用在类的0n Draw函数中
10、消息的消息响应函数的函数名为OnMouseMoveo
11、是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的可执行文献中常用的资源有、快捷键、图标、位图等
12、就是指应用程序把数据对象以文献的形式写入永久性存储体后,应用程序还能从永久性存储体来读取它,并且可以依据该文献在内存中重新创建该对象的机制
二、简述题20分,每题5分1Windows应用程序的主函数有哪3个重要任务?什么是消息循环?2简述文档/视图结构中文档类和视图类的作用并说明在文档/视图结构的应用程序中,视图类的对象是如何来获取文档类对象中的数据的3应用程序的界面有哪三种方式?分别说明该界面应用程序的外观4鼠标消息分为哪两类?它们之间有什么区别?
三、阅读下列程序,写出执行结果40分,每题5分
1、ftinclud ei ostream.hclass coun t er{p ub lie:void setnumint i{num=i;}void sho wnum{coutnum\t;}ss taticint num;;i n t counter:num=1;v oid mainO{int i;f ori=0;i5;i++{co unter::n um+=i;co u tc ount er::num\tco uten d1;
2、#i nc1u de iostr eam.hc1assA{pub1ic A{a=5;}v oid pri n t a{c outAa=aendl;priva te:i nta;f r i e ndc lassB;;c1as sB{p ubli c:void d ispla y1A t{t.a++;cout d ispla y1a=«t.a«e n dl;}v oidd ispl ay2A t{t.a--;cout«d isplay2:a=t.a«e nd1;;void mai n{A o b j1;B obj2;o b jl.pr i nta;o bj
2.dis pla ylobjl;obj
2.dis p lay2ob j1;o bj l.pr i nta;
3、#i nclu dei os tream.htem plate t yp e name Tc lassb asepub1ic baseT i,Tj{x=i;y=j;}T s um{return x+y;}privateT x,y;v oidmai n{b ase double ob j
23.3,
5.5;cout«ob j
2.sum«endl;basei ntobjl3,5;cout«objl.sumend1;}
4、#inc1u de i os tre am.hc1ass Base{publicv oida b c0{case c lassend1;;};clas sDeriv edl:public Base{pub1i c:void a bc{cout,,Deri vedlc1a ss,z endl;};};cl a ss Derived2public Base{pub1ic:vo id abc{cout MDerived2cla ssz/endl;};};v oid main{6B ase objl,*p;De rivedl obj2;De rived2obj3;p=objl;p-abc;8P二obj2;p—abc;op二obj3;p—a bc;obj
1.abc;ob j
2.abc;obj
3.abc;
5、#inc1u deiostr earn.hc lasspa ren t_c lass{int p r ivate1,pri vat e2;p ub1ic:p arent_c1assint pl,int p2{pri va tel=p1;p rivate2=p2;}int incl{return++p ri va tel;}int inc2°{r eturn++p rivate2;}void displa y3{c out/zpriva te1=,zp ri va te1,p riv ate2=〃privat e2e ndl;};clas sderi ved c1a ssp ri va tepa rent c lassint privat e3;parent_c lassp riva te4;p ublic:d erived_classin tpl,in tp2,intp3,intp4,int p5:p arent_cl asspl,p2,p riv ate4p3,p4{pr ivate3=p5;}{return parent_c1ass::inc1;int inclin tinc3o{ret urn++pr iva te3;void display{p arent_c1ass:dis pla y;priva te
4.displ ay;coutpri vate3=npr ivate3endl;}};void main{d eri ved_class d117,18,1,2,-5;d
1.inc1d isplay;
6、#inclu dei ostream.hclass A{pub1ic:Aint n{i=n;cou tvv“初始化i的值为:“Vvget_i«,\n,;}〜A{coutw释放A的对象vd;}int get_i{ret urni;}dpriv ateint i;};classB:p ub1ic A{publ ic:B intn,int m:A n{j=m;co ut“初始化j的值为:Vge t_jvv\n;}B CcoutVv释放B的对象”w\n;}〜“ntget_j{or eturn j;}叩rivateint j;;vo idmain{B obj1,2;co uv”创建了一个B的对象值为“Vv obj.get_i«ct9,«o bj.g。