面向对象程序设计0002Word格式.docx
- 文档编号:22951380
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:11
- 大小:17.84KB
面向对象程序设计0002Word格式.docx
《面向对象程序设计0002Word格式.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计0002Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
4、在具有继承关系的类层次结构中,构造函数的执行顺序是:
___、___、。
5、具有纯虚函数的类称为_____。
6、Windows应用程序的主窗口一般都是__类的派生类,而窗口函数则被封装到___类中。
7、MFC是用消息映射表来实现消息与___之间的映射的,MFC通过_____个宏来声明和实现消息映射表。
8、MFC采用结构来实现数据和数据显示的分离。
应用程序的数据是由文档类__对象来存储和管理。
9、CPaintDC是___类中最常用的派生类,它只能使用在___类的OnDraw函数中。
10、消息的消息响应函数的函数名为OnMouseMove。
11、是供Windows应用程序使用的特殊数据,它们驻留在硬盘上的可执行文件中。
常用的资源有、快捷键、图标、位图等。
12、____就是指应用程序把数据对象以文件的形式写入永久性存储体后,应用程序还能从永久性存储体来读取它,并且可以依据该文件在内存中重新创建该对象的机制。
。
二、简述题(20分,每题5分)
(1)Windows应用程序的主函数有哪3个主要任务?
什么是消息循环?
(2)简述文档/视图结构中文档类和视图类的作用。
并说明在文档/视图结构的应用程序中,视图类的对象是如何来获取文档类对象中的数据的。
(3)应用程序的界面有哪三种方式?
分别说明该界面应用程序的外观。
(4)鼠标消息分为哪两类?
它们之间有什么区别?
三、阅读下列程序,写出执行结果。
(40分,每题5分)
1、#include<
iostream.h>
classcounter
{public:
voidsetnum(inti){num=i。
}
voidshownum(){cout<
<
num<
'
\t'
。
staticintnum。
}。
intcounter:
:
num=1。
voidmain()
{inti。
for(i=0。
i<
5。
i++)
{counter:
num+=i。
cout<
counter:
num<
cout<
endl。
}
2、#include<
classA
{public:
A(){a=5。
voidprinta(){cout<
"
A:
a="
a<
private:
inta。
friendclassB。
}。
classB
voiddisplay1(At){t.a++。
cout<
display1:
t.a<
voiddisplay2(At){t.a--。
display2:
{Aobj1。
Bobj2。
obj1.printa()。
obj2.display1(obj1)。
obj2.display2(obj1)。
3、#include<
template<
typenameT>
classbase
{public:
base(Ti,Tj){x=i。
y=j。
Tsum(){returnx+y。
private:
Tx,y。
}。
voidmain()
{base<
double>
obj2(3.3,5.5)。
obj2.sum()<
base<
int>
obj1(3,5)。
obj1.sum()<
4、#include<
classBase
voidabc(){cout<
Baseclass"
classDerived1:
publicBase
Derived1class"
classDerived2:
Derived2class"
{Baseobj1,*p。
Derived1obj2。
Derived2obj3。
p=&
obj1。
p->
abc()。
obj2。
obj3。
obj1.abc()。
obj2.abc()。
obj3.abc()。
5、#include<
classparent_class
{intprivate1,private2。
public:
parent_class(intp1,intp2)
{private1=p1。
private2=p2。
intinc1()
{return++private1。
intinc2()
{return++private2。
voiddisplay()
{cout<
"
private1="
<
private1<
private2="
private2<
endl。
classderived_class:
privateparent_class
{intprivate3。
parent_classprivate4。
public:
derived_class(intp1,intp2,intp3,intp4,intp5):
parent_class(p1,p2),private4(p3,p4)
{private3=p5。
intinc1()
{returnparent_class:
inc1()。
intinc3()
{return++private3。
voiddisplay()
{parent_class:
display()。
private4.display()。
cout<
private3="
private3<
voidmain()
{derived_classd1(17,18,1,2,-5)。
d1.inc1()。
d1.display()。
6、#include<
{public:
A(intn){i=n。
“初始化i的值为:
”<
get_i()<
’\n’。
~A(){cout<
“释放A的对象。
intget_i(){returni。
inti。
classB:
publicA
{public:
B(intn,intm):
A(n){j=m。
“初始化j的值为:
get_j()<
~B(){cout<
“释放B的对象。
intget_j(){returnj。
intj。
{Bobj(1,2)。
“创建了一个B的对象。
值为:
”<
obj.get_i()<
“”<
obj.get_j()<
7、#include<
virtualvoidact1()。
voidact2(){act1()。
voidA:
act1(){cout<
A:
act1()called."
classB:
publicA
voidact1()。
voidB:
B:
{Bb。
b.act2()。
8、指出下列程序中的错误,并说明理由
classCOMPLEX
COMPLEX(doubler=0,doublei=0)。
COMPLEXoperator-(constCOMPLEX&
other)。
COMPLEXoperator=(constCOMPLEX&
doublereal=0,image=0。
{floatx。
COMPLEXy(10,20),z(2,3),sum。
sum=x-y。
sum=sum-z。
sum--。
四、编程题:
(20分,每题10分)
1.使用虚函数编程求球体和圆柱体的体积及表面积。
由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类。
在circle类中定义一个数据成员radius和两个虚函数area()和volume()。
由circle类派生sphere类和column类。
在派生类中对虚函数area()和vlume()重新定义,分别求球体和圆柱体的体积及表面积。
补充指定部分。
#include<
constdoublePI=3.14。
classcircle
circle(doubler){radius=r。
//补充此处
protected:
doubleradius。
classsphere:
publiccircle
sphere(doubler):
circle(r){}
doublearea(){return4.0*PI*radius*radius。
doublevolume()
{return4.0*PI*radius*radius*radius/3.0。
classcolumn:
publiccircle
{//补充此处
{inta,b,c。
circle*p。
输入球体半径"
cin>
>
a。
spheresobj(a)。
p=&
sobj。
球体的体积="
球体的表面积="
输入圆柱体的半径,高"
b>
c。
columncobj(b,c)。
cobj。
圆柱体的体积="
p->
volume()<
圆柱体的表面积="
area()<
2.使用成员函数或友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 0002