1、面向对象程序设计含答案一、填空题(20分)1、_构造函数_是特殊成员函数,在创立和初始化对象时调用。2、_静态成员_是局部于类成员,它提供一种同类对象_共享_机制。3、运算符重载作用是使运算符可以操作自定义_类对象_,但重载后运算符原有 _基本语义_不变。4、派生类不能访问基类_私有_成员,但可以访问基类公有成员和_保护_成员。5、具备_纯虚函数_类称为抽象类。6、Windows应用程序是靠_消息_来驱动,其主函数重要任务是对窗口进行初始化工作和_消息循环_。7、MFC是用消息映射表来实现消息与_消息响应函数_之间映射,MFC通过_4_个宏来声明和实现消息映射表。8、在文档/视图构造框架中,视
2、图类_CView_类对象用来显示数据并接受顾客操作。文档类_CDocument_对象作用是存储和管理数据。9、CPaintDC是_CDC_类中最惯用派生类,它只能使用在CView类_OnDraw_函数中。10、消息WM_MOUSEMOVE消息响应函数函数名为_OnMouseMove_。11、资源是供Windows应用程序使用特殊数据,它们驻留在硬盘上_可执行文献_中。惯用资源有菜单、快捷键、_图标_、位图等。12、内存中对象可以以文献形式存储在永久性存储介质中,而当应用程序再把它从永久性存储介质读入后,该对象能恢复为本来状态,则该对象称之为_永(持)久性对象_。二、简述题(20分,每题5分)(
3、1)简述构成文档/视图构造应用程序框架4个MFC派生类,并说出它们功能。答:如果工程名称为MyPrj,则MFC AppWizard会自动创立如下4个派生类来构成应用程序框架:CFrame类派生类CMmainFrame、CWinApp类派生类CMyPrjApp、CDocument类派生类CMyPrjDoc和CMyPrjView。 其中,CMyPrjDoc类对象用来存储和管理应用程序中数据;CMainFrame对象与CMyPrjView对象构成了应用程序界面,CMainFrame对象只是CMyPrjView对象容器,而CMyPrjView类对象是用来显示文档与接受顾客事件;CMyPrjApp类对象
4、是应用程序全局对象;它是应用程序中对象容器;负责创立应用程序界面和消息循环。(2)为什么拆分窗口显示更新必要要同步?文档类成员函数Update All Views作用是什么?答:由于应用程序所有拆分窗口显示应当是同一种文档,因此当文档发生变化时,该文档所相应窗口固然要同步更新显示以对的地反映文档内容。文档类成员函数Update All Views作用是告知文档所相应所有窗口同步进行重绘。(3)如何才干使控件成为窗口子窗口并且在窗口中可见?按钮控件能创造哪三种不同形式?答:为了使控件成为窗口 子窗口并且在窗口中可见,两个控制样式常数使所有控件都必要使用,一种是WS_CHILD,另一种是WS_VI
5、SIBLE,前者使控件成为应用程序 子窗口,后者使控件可见。在使用各种常数制定控件样式时,应当用符号|将其进行连接。按钮控件能创造如下三种不同形式:下压按钮、复选框、和单选按钮。(4)如何把绘图工具载入设备描述环境进行绘画?请以画笔为例写出执行环节。答:(1)创立画笔:CPen newPen(style,width,color);(2) 把画笔载入DC:CPen *oldPen=pDC-SelectObject(&newPen);(3)按规定进行绘画(4)恢复旧画笔pDC-SelectObject(oldPen);三、阅读下列程序,写出执行成果。(40分,每题5分) 1、#includecla
6、ss Abcpublic: Abc( )a=0;b=0;c=0;Abc(int i,int j,int k)a=i;b=j;c=k;void get(int&i,int&j,int&k)i=a;j=b;k=c;Abc operator * (Abc obj);private: int a,b,c;Abc Abc:operator * (Abc obj)Abc tempobj; tempobj.a=a*obj.a; tempobj.b=b*obj.b; tempobj.c=c*obj.c; return tempobj;void main() Abc obj1(1,2,3),obj2(5,5,5
7、),obj3; int a,b,c; obj3=obj1*obj2; obj3.get(a,b,c);cout”(obj1*obj2):t”a=”at”b=”bt”c=”ctendl;(obj2 * obj3).get(a,b,c);cout”(obj2*obj3):t”a=”at”b=”bt”c=”ctendl;运营成果:(obj1*obj2):a=5 b=10 c=15(obj2*obj3):a=25 b=50 c=752、#include class BASE1 public:BASE1(int i)cout”调用基类BASE1构造函数:”iendl; ; class BASE2 pub
8、lic:BASE2(int j)cout”调用基类BASE2构造函数:”jendl; ; class A:public BASE1,public BASE2 public:A(int a,int b,int c,int d):BASE2(b),BASE1(c),b2(a),b1(d) cout”调用派生类A构造函数;”a+b+c+dendl;private:BASE1 b1;BASE2 b2;void main( )A ojb(11,22,33,44);运营成果:调用基类Base1构造函数:33调用基类Base2构造函数:22调用基类Base1构造函数:44调用基类Base1构造函数:11调用
9、派生类A构造函数:1103、#include template void fun(T&x,T&y) T temp;temp=x;x=y;y=temp;void fun(double x,int y)double temp;temp=x;x=y;y=temp;void main( )int i,j;i=30;j=10;fun(i,j);cout”i=”it”j=”jendl;double a,b;a=1.23;b=3.21;fun(a,b);cout”a=”at”b=”bendl;double m=10;int n=30;fun(m,n);cout”m=”mt”n=”nendl;运营成果:i=1
10、0 j=30a=3.21 b=1.23m=10 n=304、#include void main( ) double x=123.456;cout.width(10);cout.setf(ios:dec,ios:basefield);coutxendl;cout.setf(ios:left);coutxendl;cout.width(15);cout.setf(ios:right,ios:left);coutxendl;cout.setf(ios:showpos);coutxendl;cout-xendl;cout.setf(ios:scientific);coutxendl; 运营成果: 1
11、23.456 123.456 123.456+123.456 -123.456 +1.234560e+0025、#include enum BREED GOLDEN,CAIRN,DANDIE,SHETLAND,DOBERMAN,LAB ;class Mammalpublic: / constructors Mammal():itsAge(2),itsWeight(5) Mammal() /accessors int GetAge() const return itsAge; void SetAge(int age) itsAge = age; int GetWeight() const ret
12、urn itsWeight; void SetWeight(int weight) itsWeight = weight; /Other methods void Speak()const cout Mammal sound!n; void Sleep()const cout shhh. Im sleeping.n;protected: int itsAge; int itsWeight;class Dog :public Mammalpublic: / Constructors Dog():itsBreed(GOLDEN) Dog() / Accessors BREED GetBreed()
13、 const return itsBreed; void SetBreed(BREED breed) itsBreed = breed; / Other methods void WagTail() const cout Tail wagging.n; void BegForFood() const cout Begging for food.n;private: BREED itsBreed;int main()Dog fido; fido.Speak(); fido.WagTail(); cout Fido is fido.GetAge() years oldn; return 0;运营成果:Mammal sound! Tail wagging Fido is 2 years old6、#includeclass Basepublic:void who()cout”Base class”endl;class Derived1:public Basepublic:void who()cout”Derived1 class”endl;class derived2:public Base public:void who()cout”Derived2 class”endl; Void main()base obj1,*p;derived1 obj2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1