2023年面向对象程序设计含答案_第1页
2023年面向对象程序设计含答案_第2页
2023年面向对象程序设计含答案_第3页
2023年面向对象程序设计含答案_第4页
2023年面向对象程序设计含答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

填空题(20分)__构造函数___是特殊的成员函数,在创建和初始化对象时调用。_静态成员____是局部于类的成员,它提供一种同类对象的__共享____机制。运算符重载的作用是使运算符可以操作自定义的_类对象___,但重载后运算符原有的_基本语义__不变。派生类不能访问基类的_私有__成员,但可以访问基类的公有成员和__保护___成员。具有__纯虚函数___的类称为抽象类。Windows应用程序是靠_消息_来驱动的,其主函数的重要任务是对窗口进行初始化工作和_消息循环__。MFC是用消息映射表来实现消息与__消息响应函数__之间的映射的,MFC通过__4____个宏来声明和实现消息映射表。在文档/视图结构的框架中,视图类_CView__类的对象用来显示数据并接受用户操作。文档类_CDocument__对象的作用是存储和管理数据。CPaintDC是_CDC__类中最常用的派生类,它只能使用在CView类的_OnDraw__函数中。消息WM_MOUSEMOVE的消息响应函数的函数名为_OnMouseMove___。资源是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的_可执行文献__中。常用的资源有菜单、快捷键、__图标___、位图等。内存中的对象可以以文献的形式存储在永久性存储介质中,而当应用程序再把它从永久性存储介质读入后,该对象能恢复为本来的状态,则该对象称之为__永(持)久性对象___。二、简述题(20分,每题5分)(1)简述构成文档/视图结构应用程序框架的4个MFC派生类,并说出它们的功能。答:假如工程名称为MyPrj,则MFCAppWizard会自动创建以下4个派生类来构成应用程序的框架:CFrame类的派生类CMmainFrame、CWinApp类的派生类CMyPrjApp、CDocument类的派生类CMyPrjDoc和CMyPrjView。其中,CMyPrjDoc类对象用来存储和管理应用程序中的数据;CMainFrame对象与CMyPrjView对象构成了应用程序的界面,CMainFrame对象只是CMyPrjView对象的容器,而CMyPrjView类的对象是用来显示文档与接受用户事件的;CMyPrjApp类的对象是应用程序的全局对象;它是应用程序中对象的容器;负责创建应用程序界面和消息循环。(2)为什么拆分窗口的显示更新必须要同步?文档类的成员函数UpdateAllViews的作用是什么?答:由于应用程序的所有拆分窗口显示的应当是同一个文档,所以当文档发生变化时,该文档所相应的窗口当然要同时更新显示以对的地反映文档的内容。文档类的成员函数UpdateAllViews的作用是告知文档所相应的所有窗口同时进行重绘。(3)如何才干使控件成为窗口的子窗口并且在窗口中可见?按钮控件能发明哪三种不同的形式?答:为了使控件成为窗口的子窗口并且在窗口中可见,两个控制样式的常数使所有控件都必须使用的,一个是WS_CHILD,另一个是WS_VISIBLE,前者使控件成为应用程序的子窗口,后者使控件可见。在使用多个常数制定控件样式时,应当用符号"|"将其进行连接。按钮控件能发明以下三种不同的形式:下压按钮、复选框、和单选按钮。(4)如何把绘图工具载入设备描述环境进行绘画?请以画笔为例写出执行环节。答:(1)创建画笔:CPennewPen(style,width,color);(2)把画笔载入DC:CPen*oldPen=pDC->SelectObject(&newPen);(3)按规定进行绘画(4)恢复旧画笔pDC->SelectObject(oldPen);三、阅读下列程序,写出执行结果。(40分,每题5分)1、#include<iostream.h>classAbc{public:Abc(){a=0;b=0;c=0;}Abc(inti,intj,intk){a=i;b=j;c=k;}voidget(int&i,int&j,int&k){i=a;j=b;k=c;}Abcoperator*(Abcobj);private:inta,b,c;};AbcAbc::operator*(Abcobj){Abctempobj;tempobj.a=a*obj.a;tempobj.b=b*obj.b;tempobj.c=c*obj.c;returntempobj;}voidmain(){Abcobj1(1,2,3),obj2(5,5,5),obj3;inta,b,c;obj3=obj1*obj2;obj3.get(a,b,c);cout<<”(obj1*obj2):\t”<<”a=”<<a<<’\t’<<”b=”<<b<<’\t’<<”c=”<<c<<’\t’<<endl;(obj2*obj3).get(a,b,c);cout<<”(obj2*obj3):\t”<<”a=”<<a<<’\t’<<”b=”<<b<<’\t’<<”c=”<<c<<’\t’<<endl;}运营结果:(obj1*obj2):a=5b=10c(obj2*obj3):a=25b=50c=752、#include<iostream.h>classBASE1{public:BASE1(inti){cout<<”调用基类BASE1的构造函数:”<<i<<endl;}};classBASE2{public:BASE2(intj){cout<<”调用基类BASE2的构造函数:”<<j<<endl;}};classA:publicBASE1,publicBASE2{public:A(inta,intb,intc,intd):BASE2(b),BASE1(c),b2(a),b1(d){cout<<”调用派生类A的构造函数;”<<a+b+c+d<<endl;}private:BASE1b1;BASE2b2;};voidmain(){Aojb(11,22,33,44);}运营结果:调用基类Base1的构造函数:33调用基类Base2的构造函数:22调用基类Base1的构造函数:44调用基类Base1的构造函数:11调用派生类A的构造函数:1103、#include<iostream.h>template<typenameT>voidfun(T&x,T&y){Ttemp;temp=x;x=y;y=temp;}voidfun(doublex,inty){doubletemp;temp=x;x=y;y=temp;}voidmain(){inti,j;i=30;j=10;fun(i,j);cout<<”i=”<<i<<’\t’<<”j=”<<j<<endl;doublea,b;a=1.23;b=3.21;fun(a,b);cout<<”a=”<<a<<’\t’<<”b=”<<b<<endl;doublem=10;intn=30;fun(m,n);cout<<”m=”<<m<<’\t’<<”n=”<<n<<endl;}运营结果:i=10j=30a=3.21b=1.23m=10n=304、#include<iostream.h>voidmain(){doublex=123.456;cout.width(10);cout.setf(ios::dec,ios::basefield);cout<<x<<endl;cout.setf(ios::left);cout<<x<<endl;cout.width(15);cout.setf(ios::right,ios::left);cout<<x<<endl;cout.setf(ios::showpos);cout<<x<<endl;cout<<-x<<endl;cout.setf(ios::scientific);cout<<x<<endl;}运营结果:123.456123.456123.456+123.456-123.456+1.234560e+0025、#include<iostream.h>enumBREED{GOLDEN,CAIRN,DANDIE,SHETLAND,DOBERMAN,LAB};classMammal{public:ﻩ//constructorsﻩMammal():itsAge(2),itsWeight(5){} ~Mammal(){} //accessors intGetAge()constﻩ{returnitsAge;}ﻩvoidSetAge(intage){itsAge=age;} intGetWeight()const{returnitsWeight;}ﻩvoidSetWeight(intweight){itsWeight=weight;}ﻩ//OthermethodsﻩvoidSpeak()const{cout<<"Mammalsound!\n";} voidSleep()const{cout<<"shhh.I'msleeping.\n";}protected: intitsAge; intitsWeight;};classDog:publicMammal{public:ﻩ//Constructors Dog():itsBreed(GOLDEN){}ﻩ~Dog(){}ﻩ//Accessors BREEDGetBreed()const{returnitsBreed;} voidSetBreed(BREEDbreed){itsBreed=breed;}ﻩ//Othermethods voidWagTail()const{cout<<"Tailwagging...\n";}ﻩvoidBegForFood()const{cout<<"Beggingforfood...\n";}private: BREEDitsBreed;};intmain(){Dogfido; fido.Speak();ﻩfido.WagTail();ﻩcout<<"Fidois"<<fido.GetAge()<<"yearsold\n";ﻩreturn0;}运营结果:Mammalsound!Tailwagging…Fidois2yearsold6、#include<iostream.h>classBase{public:voidwho(){cout<<”Baseclass”<<endl;};classDerived1:publicBase{public:voidwho(){cout<<”Derived1class”<<endl;};classderived2:publicBase{public:voidwho(){cout<<”Derived2class”<<endl;Voidmain(){baseobj1,*p;derived1obj2;derived2obj3;P=&obj1;p->who();P=&obj2;p->who();P=&obj3;p->who();Obj1.who();Obj2.who();Obj3.who();}结果:baseclassBaseclassBaseclassBaseclassDerived1classDerived2class7、#include<iostream.h>classexample{private:intdate;staticintcount;public:example(inty=10):date(y){cout<<”date=”<<date<<endl;Count++;}staticintdisplay(){returncount;}};intexample::count=0;voidmain(){examplee1;examplee2(20);cout<<e1.Display()<<endl;cout<<e2.Display()<<endl;cout<<example::Display()<<endl;}运营结果:Date=10Date=202228、指出下列程序中的错误,并说明理由#include<iostream.h>classStudent{public:voidStudent(){};//构造函数有返回类型错,函数后面多分号voidDisplay(){cin>>name>>number;cout<<姓名<<name<<学号<<number<<endl;}//字符串缺少双引号private:char*name=noname;//数据成员不能赋值intnumber=0;//数据成员不能赋值};四、编程题:(20分,每题10分)编写一个程序,实现小型公司的工资管理。该公司重要有4类人员:经理、兼职技术人员、销售员和销售经理。规定存储这些人员的编号、姓名和月工资,计算月工资并显示所有信息。月工资计算办法是:经理拿固定月薪8000元,兼职技术人员按每小时100元领取月薪,销售员按当月销售额的4%提成,销售经理既拿固定月工资又拿销售提成,固定月工资为5000元,销售提成为所管部门当月销售总额的0.5%。规定补充未完毕的代码,使其成为一个完整的程序。#include<iostream.h>classEmployee{public:employee(){cout<<”职工编号、姓名”;cin>>no>>name;salary=0;}voidPay(){}voidDisplay(){}Protected:Intno;charname[10];floatsalary;};Classtechnician:publicEmployee//派生技术人员{public:Technician(){hourlyrate=100.0;}voidPay(){cout<<name<<”本月工作时数:”cin>>workhours;salary=hourlyrate*workhours;}voidDisplay(){cout<<”兼职技术人员”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl;}private://补充下面内容floathourlyrateintworkhours;};ClassSaleman:publicEmployee//派生销售员类{public:Salesman(){commrate=0.04f;}//销售提成比例voidPay(){cout<<name<<”本月销售额:”;//补充下面内容cin>>sales;salary=sales*commrate;}voidDisplay(){cout<<”销售员”<<name<<”(编号为”<<no<<”)”本月工资:”<<salary<<endl;}Protected:Floatcommrate;sales;};ClassManager:virtualpublicEmployee{public:Manager(){monthlypay=8000;}//补充函数体内容VoidPay(){salar

温馨提示

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

评论

0/150

提交评论