第八章类和对象复习题docWord格式文档下载.docx
《第八章类和对象复习题docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《第八章类和对象复习题docWord格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。
A.一个类是由一批数据以及对其操作的函数组成
B.类中数据和函数可以分为private和public两大类
C.具有“类”类型特征的变量称为“对象”
D.
12.
如果用struct声明类时,
对其成员既不指定private,
也不指定public,则
系统就默认
为()
A・privateB.publicC・protected
13・在声明类类型时,声明的次序是()
A・先声明private部分,再声明public部分
B.先声明public部分,再声明private部分
C.声明public部分和声明private部分不能同时出现
D.既可以先声明private部分,也可以先声明public部分
14.关于类的友元函数的描述,正确的是()
A・友元函数可以被继承
D.不确定
B.一个类的友元函数可以访问这个类的所有成员
C・一个类的友元函数必须在这个类中定义成内联函数
D•—个类的友元函数的返回类型必须是这个类的类型标识符
15.在一个类中()
A.只能有数据成员
B.只能有成员函数
C.
可以有数据成员和成员函数
D.只能有数据成员或只能有成
类中私有成员函数可以被其他类中的成员函数所调用
员函数
16•下列特性中,不是面向对象程序设计的特征的是()
A・继承
B.内联函数
17.在声明类类型时,声明的次序是()
A.先声明private部分,再声明public部分
18.下列说法正确的是()
A.类是对象的抽象,对象是类的具体实例
B.对象是类的抽象
C・类是对象的具体实例
D.对象是类的模板19.类是对具有共同属性和行为的一类事物的抽象描述,
共同属性被描述为类中的数据成员,共同行为被描述为类中的。
成员函数
20.在一个函数的定义或声明前加上关键字时,该函数就声明为
内联函数。
inline
21•单目运算符作为类成员函数重载时没有参数;
双目运算符作为重载时只需声明其右操作数,作为友元函数重载时需声明全部操作数。
成
22.当用protected继承从基类派生一个类时,基类的public成员成为派生类的
中,将
置于虚函数的函数原型的末尾可以将该函数声明为纯虚
函数。
protected
=0
protected成员,protected成员成为派生类的成员。
在类定义
23.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类
中的,共同行为被描述为类中的成员函数。
数据成员
24・如果一个数组中的每个元素都是同一个类的对象,则该数组被称
为o对象数组
25.在C++语言中,每个对象都有一个隐含的指针叫做this指针,该指针指
向o对象自身
26・当一个类对象的成员函数被调用时,该成员函数的指针指向
调用它的对象。
this
27.在结构定义中,数据和成员函数默认权限是公有的。
在类定义中,数据和成员
函数默认权限是。
私有的
28.对类中的成员函数和属性的访问是通过、protected和
这3个关键字来控制的。
publicprivate
29.仔细阅读程序,在题后写出其运行结果。
#include<
iostream>
usingnamespacestd;
classBox
{public:
Box(intw=10,inth=10,intlen=10);
intvolumeO;
private:
intheight;
intwidth;
intlength;
};
Box:
:
Box(intw,inth,intlen)
{height=h;
width=w;
length=len;
}
intBox:
volume()
{return(height*width*length);
intmain()
{
Boxboxl;
cout«
nThevolumeofboxlistf«
boxLvoluineO«
endl;
Boxbox2⑸;
nThevolumeofbox2isn«
box2eVoluine()«
Boxbox3⑸3);
nThevolumeofbox3istf«
box3eVoluineO«
Boxbox4(5,3,2);
nThevolumeofbox4istf«
box4eVoluineO«
return0;
运行结果:
1000(2分)
500(1分)
150(1分)
30(1分)
30.根据输出结果,在程序中填入正确的语句。
classInstrument!
public:
virtualvoidPrint()const{cout«
nInstrument:
Printn«
classPiano:
publicInstument{
voidPrint()constfcout«
MPiano:
Print«
}
classGuitar:
publicInstrulment{
voidPrint()const{cout«
nGuiur:
PrintM«
voidTone(){
voidmain(){
Guitarg;
Tone(g);
Pianop;
Tone(p);
输出结果为:
Guitar:
Print
Piano:
33•#include<
h>
Instrument&
obj
obj.Print();
31.下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。
请完成该程序。
#includeiostream>
#indude<
math>
classPointf
Point(){
X=a;
Y=b;
voidPrint(){
HX=n«
X«
cout«
nY=n«
Y«
floatX,Y;
classDistance!
floatDis(Point&
p,Point&
q);
floatDistance:
Dis(Point&
q){floatresult;
result«
returnresult;
Pointp(10,10),q(20,20);
Distanced;
d・Dis(p,q);
34.friendclassDistance
floata,floatb
resuit=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y))
32.在下面程序的横线处填上适当的语句,使运行该程序执行结果为20o
classMyCIass{
〃取X值
intx;
Myclassmy(20);
my>
GetNum()«
33.#include<
iostream.h>
或者"
iostream.h,,
MyClass(intn){x=n;
intGetNum(){returnx;
33.下列程序的运行结果如下:
Base'
scons>
Derived'
sdes>
sdes.
根据结果将程序补充完整。
#incude<
classBase{
Base(){cout«
«
{cout«
"
sdes.**<
}};
classDerived:
publicBase{
Derived(){cout«
nDerivedfscons>
tf«
-Derived(){cout«
HDerived,sdes.n«
};
Base*Ptr=
deleteptr;
34・“Base'
scons.”
~Base()
newDerived
34•分析下列程序,写出其运行结果。
classMyClass
MyClass(inta){x=a;
voidFunl(){x++;
voidFun2(){x+=2;
voidFun3(){x+=3;
voidPrint(){cout«
,x=,,«
x«
}private:
voidmain()
MyClassmy(8);
void(MyClass:
*pf)();
my.Print();
35.仔细阅读程序,
在题后写出其运行结果。
pf=MyClass:
Funl;
(my・*pf)();
my.Print();
pf=MyCIass:
Fun2;
pf=MyClass:
Fun3;
(my.*pf)();
37.x=8
(2分)
x=9
(1分)
x=ll
x=14
usingnamespacestd;
Box(inth=109intw=12,intlen=15):
height(h),width(w),length(len){}intvolumeO;
{inti;
Boxa[3]={
Box(10,12,15),
Box(15,l8,20),
Box(l6,20,26)
for(i=0;
i<
=2;
i++)
Mvolumeofa[M«
i«
n]isn«
a[i].volume()«
return0;
38.volumeofa[0]is1000
volumeofa[l]is5400
volumeofa[0]is8320
36•计算两个长方柱的体积,请编一个基于对象的程序,数据成员包括length(长)>width(宽)、height(高)。
要求用成员函数实现以下功能。
(1)由键盘分别输入两个长方柱的长、宽、高。
(2)计算长方柱的体积。
(3)输出2个长方柱的体积。
classBox(1分)
voidget_value();
floatvolume();
voiddisplayO;
floatlengh;
floatwidth;
floatheight;
(1分)
voidBox:
get_value()(1分)
{cout«
npleaseinputlengh,widthJieight:
;
cin»
lengh;
vvidth;
height;
floatBox:
volume()(1分)
{return(lengh*width*height);
display()(1分)
volume()«
{Boxboxl,box2;
boxl>
get_value();
boxl.displayO;
box2>
box2.display();
37.根据输出结果,在程序中填入正确的语句。
classInstrumentf
voidPrint()constf}
HGuiur:
voidTone()
uPiano:
38.写出下列程序的运行结果。
classBl{
intNv;
voidfun(){cout«
uMemberofBl・,'
vvendl;
classB2{
uMemberofB2・,'
classDl:
publicBl,publicB2{
uMemberofDl・”vvendl;
DIdl;
dl.Nv=l;
dl.fun();
dl.Bl:
Nv=2;
fun();
dLB2:
Nv=3;
}运行结果:
MemberofBl・
MemberofB2・
38.MemberofDI.(2分)
39在划线处填上适当的语句,完成下列程序。
math.h>
classPoint{
Point(doublea9doubleb,doublec){X=a;
Z=c}〃构造函数
doubleGetx(){returnX;
doubleGety(){returnY;
doubleGetz(){returnZ;
classLine:
Point{
Line(doublea,doubleb,doublec,doubled)
K=d;
voidshow(){
Getx()«
^”;
Gety()«
^”;
Getz()«
^^”;
K«
doubleK;
Lineobj(l・2,3・4,5・6,7.8);
obj.show();
}〃运行结果是1.23.45.67.8
34.doubleX,Y,Z;
pubic
Point(a,b,c)
max,用指向对象的指针作函数参数,在
max函数找出5个学生中成绩最
40.建立一个对象数组,内放5个学生的数据(学号,成绩),设立一个函数
高者,并输出其学号。
41.
classStudent
Student(intn9floats):
num(n),score(s){}(1分)
intnum;
floatscore;
{Studentstud[5]={
Student(101,78.5),Student(102,85.5),Student(103,98.5),(1分)
Student(104,100.0),Student(105,95.5)};
voidmax(Student*);
Student*p=&
stud[0];
max(p);
}(1分)
voidmax(Student*arr)
{floatmax_score=arr[0].score;
intk=0;
for(inti=l;
iv5;
if(arr[i].score>
max_score){max_score=arr[i].score;
k=i;
arr[k].num«
nn«
max_score«