第八章类和对象复习题doc.docx
- 文档编号:5505255
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:15
- 大小:30.24KB
第八章类和对象复习题doc.docx
《第八章类和对象复习题doc.docx》由会员分享,可在线阅读,更多相关《第八章类和对象复习题doc.docx(15页珍藏版)》请在冰豆网上搜索。
第八章类和对象复习题doc
第八章类和对象复习题
1•系统为每个类提供一个this指针,在类的成员函数内,通过this指针可以间接访问这个类的()
C・友元类的public成员D.所有派生类中的public成员
2.如果在class类的定义中既不指定private,也不指定public,则系统就默认为()
A.privateB.public
C.protectedD.不确定
3.对静态数据成员的描述,正确的是()
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
4.下面叙述错误的是()
A.基类的protected成员在派生类中仍然是protected的
B.基类的protected成员在public派生类中仍然是protected的
C.基类的protected成员在private派生类中是private的
D.基类的protected成员不能被派生类的对象访问
5•对于友元函数的描述,正确的是()
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.友元函数破坏了类的封装性和隐藏性
D.友元函数不能访问类的私有成员
6•关于内联函数的描述,正确的是()
A・使用内联函数可以缩短程序代码,减少占用的内存空间
B•使用内联函数可以减少函数调用时入栈和出栈的时间和空间开销,但是会使
程序的代码量增加
C・内联函数只能在类的内部进行声明和定义,不能作为全局函数
D•内联函数可以做虚函数
7.类是对象的()
B.抽象
A.具体
C.封装D.多态
&struct声明类时,若不作private或public声明,系统默认为()
A.privateB.publicC.protectedD.不能确定
9•引入内联函数的主要目的是()
A・缩短程序代码,少占用内存空间
B.既可以保证程序的可读性,又能提高程序的运行效率
C.占用内存空间少,执行速度快
D•使程序的结构比较清晰
10.类的具体表现是通过定义来操作的。
对象
11・说法错误的是()
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部分
B.先声明public部分,再声明private部分
C.声明public部分和声明private部分不能同时出现
D.既可以先声明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
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⑸;
cout«nThevolumeofbox2isn«box2eVoluine()«endl;Boxbox3⑸3);
cout«nThevolumeofbox3istf«box3eVoluineO«endl;Boxbox4(5,3,2);
cout«nThevolumeofbox4istf«box4eVoluineO«endl;return0;
}
运行结果:
1000(2分)
500(1分)
150(1分)
30(1分)
30.根据输出结果,在程序中填入正确的语句。
classInstrument!
public:
virtualvoidPrint()const{cout«nInstrument:
Printn«endl;}
};
classPiano:
publicInstument{
public:
voidPrint()constfcout«MPiano:
:
Print«endl;}
};
classGuitar:
publicInstrulment{
public:
voidPrint()const{cout«nGuiur:
:
PrintM«endl;}
};
voidTone(){
}
voidmain(){
Guitarg;Tone(g);
Pianop;Tone(p);
}
输出结果为:
Guitar:
:
Piano:
:
33•#include
Instrument&obj
obj.Print();
31.下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。
请完成该程序。
#includeiostream>h>
#indude
classPointf
public:
Point(){
X=a;
Y=b;
voidPrint(){
cout«HX=n«X«endl;cout«nY=n«Y«endl;
}
private:
floatX,Y;
classDistance!
public:
floatDis(Point&p,Point&q);};floatDistance:
:
Dis(Point&p,Point&q){floatresult;
cout«result«endl;returnresult;
voidmain(){
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{
public:
〃取X值
private:
intx;
};
voidmain(){
Myclassmy(20);cout«my>GetNum()«endl;
}
33.#include
MyClass(intn){x=n;}
intGetNum(){returnx;}
33.下列程序的运行结果如下:
Base'scons>
Derived'scons>
Derived'sdes>
Base'sdes.
根据结果将程序补充完整。
#incude
classBase{
public:
Base(){cout««endl;}
{cout«"Base'sdes.** publicBase{ public: Derived(){cout«nDerivedfscons>tf«endl;} -Derived(){cout«HDerived,sdes.n«endl;} }; voidmain(){ Base*Ptr= deleteptr; } 34・“Base'scons.” ~Base() newDerived 34•分析下列程序,写出其运行结果。 #include classMyClass public: MyClass(inta){x=a;} voidFunl(){x++;} voidFun2(){x+=2;} voidFun3(){x+=3;} voidPrint(){cout«,,x=,,«x«endl;}private: intx; }; voidmain() { MyClassmy(8); void(MyClass: : *pf)(); my.Print(); 35.仔细阅读程序, 在题后写出其运行结果。 pf=MyClass: : Funl;(my・*pf)();my.Print();pf=MyCIass: : Fun2;(my・*pf)();my.Print();pf=MyClass: : Fun3;(my.*pf)();my.Print(); } 运行结果: 37.x=8 (2分) x=9 (1分) x=ll (1分) x=14 (1分) #include classBox {public: Box(inth=109intw=12,intlen=15): height(h),width(w),length(len){}intvolumeO; private: intheight; intwidth; intlength; }; intBox: : volume() {return(height*width*length); } intmain() {inti; Boxa[3]={ Box(10,12,15), Box(15,l8,20), Box(l6,20,26) }; for(i=0;i<=2;i++) cout«Mvolumeofa[M«i«n]isn«a[i].volume()«endl; return0; } 运行结果: 38.volumeofa[0]is1000 (2分) volumeofa[l]is5400 (2分) volumeofa[0]is8320 (1分) 36•计算两个长方柱的体积,请编一个基于对象的程序,数据成员包括length(长)>width(宽)、height(高)。 要求用成员函数实现以下功能。 (1)由键盘分别输入两个长方柱的长、宽、高。 (2)计算长方柱的体积。 (3)输出2个长方柱的体积。 #include usingnamespacestd;classBox(1分) {public: (1分) (1分) (1分) voidget_value();floatvolume();voiddisplayO; public: floatlengh; floatwidth; floatheight;(1分) }; voidBox: : get_value()(1分) {cout«npleaseinputlengh,widthJieight: "; cin»lengh; cin»vvidth; cin»height; } floatBox: : volume()(1分) {return(lengh*width*height);} voidBox: : display()(1分) {cout«volume()«endl;} intmain() {Boxboxl,box2; boxl>get_value(); boxl.displayO;(1分) box2>get_value(); box2.display();(1分) return0; } 37.根据输出结果,在程序中填入正确的语句。 classInstrumentf public: virtualvoidPrint()const{cout«nInstrument: Printn«endl;} }; classPiano: publicInstument{ public: voidPrint()constf} }; classGuitar: publicInstrulment{ public: voidPrint()const{cout«HGuiur: : Printn«endl;} }; voidTone() obj.Print(); } voidmain(){ Guitarg;Tone(g); Pianop;Tone(p); } 输出结果为: Guitar: : Print Piano: : Print 33.#include cout«uPiano: : Print«endl; Instrument&obj 38.写出下列程序的运行结果。 #include classBl{ public: intNv; voidfun(){cout«uMemberofBl・,'vvendl;} }; classB2{ public: intNv; voidfun(){cout«uMemberofB2・,'vvendl;} }; classDl: publicBl,publicB2{ public: intNv; voidfun(){cout«uMemberofDl・”vvendl;} }; voidmain(){ DIdl; dl.Nv=l;dl.fun(); dl.Bl: : Nv=2;dl.Bl: : fun(); dLB2: : Nv=3;dLB2: : fun(); }运行结果: MemberofBl・ (2分) MemberofB2・ (1分) 38.MemberofDI.(2分) 39在划线处填上适当的语句,完成下列程序。 #include classPoint{ public: Point(doublea9doubleb,doublec){X=a;Y=b;Z=c}〃构造函数 doubleGetx(){returnX;} doubleGety(){returnY;} doubleGetz(){returnZ;} private: classLine: Point{ public: Line(doublea,doubleb,doublec,doubled) K=d; } voidshow(){ cout«Getx()«^”; cout«Gety()«^”; cout«Getz()«^^”; cout«K«endl; } private: doubleK; }; voidmain() 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. #include usingnamespacestd;(1分) classStudent {public: Student(intn9floats): num(n),score(s){}(1分) intnum; floatscore; };(1分) voidmain() {Studentstud[5]={ Student(101,78.5),Student(102,85.5),Student(103,98.5),(1分) Student(104,100.0),Student(105,95.5)};(1分) voidmax(Student*); Student*p=&stud[0];(1分) max(p); }(1分) voidmax(Student*arr) {floatmax_score=arr[0].score;(1分) intk=0; for(inti=l;iv5;i++) if(arr[i].score>max_score){max_score=arr[i].score;k=i;}(1分) cout«arr[k].num«nn«max_score«endl; }(1分)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 对象 复习题 doc