面向对象程序设计期末复习题与答案1Word文件下载.docx
《面向对象程序设计期末复习题与答案1Word文件下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计期末复习题与答案1Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
填空题1.假定AB为一个类,则执行“ABa[10];
”语句时,系统自动调用该类的构造函数的次数为_________。
答案:
10
2.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。
公有继承的公有成员
3.能作为重载函数的调用的依据是_________。
参数个数、参数类型
4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;
其中只能用于检测输入流是否结束状态的操作函数名称是_________
eof
5.函数重载是指_________。
两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
6.在派生类中重新定义虚函数时必须在_________方面与基类保持一致。
参数个数
阅读程序例题【计算题】
1.分析以下程序的执行结果
#include<
iostream.h>
classSample
{
intx,y;
public:
Sample(){x=y=0;
}
Sample(inta,intb){x=a;
y=b;
~Sample()
if(x==y)
cout<
<
“x=y”<
endl;
else
“x!
=y”<
voiddisp()
“x=”<
x<
“,y”=<
y<
};
voidmain()
Samples1,s2(2,3);
s1.disp();
s2.disp();
解:
x=0,y=0
x=2,y=3
x!
=y
x=y
2.分析以下程序的执行结果
intadd(intx,inty)
returnx+y;
intadd(intx,inty,intz)
returnx+y+z;
inta=4,b=6,c=10;
add(a,b)<
<
add(a,b,c)<
10,203.分析以下程序执行结果
doubleadd(doublex,doubley)
inta=4,b=6;
doublec=2.6,d=7.4;
"
"
add(c,d)<
10,10
4.分析以下程序执行的结果
Sample(){x=y=0;
Sample(inta,intb){x=a;
x="
y="
Samples1,s2(1,2),s3(10,20);
Sample*pa[3]={&
s1,&
s2,&
s3};
for(inti=0;
i<
3;
i++)
pa[i]->
disp();
x=1,y=2
x=10,y=205.分析以下程序的执行结果:
classbase
intn;
base(){};
base(inta)
cout<
"
constructingbaseclass"
<
endl;
n=a;
cout<
n="
n<
~base(){cout<
destructingbaseclass"
}
classsubs:
publicbase
intm;
subs(inta,intb):
base(a)
constructingsubclass"
m=b;
m="
m<
~subs(){cout<
destructingsubclass"
voidmain()
subss(1,2);
}
constructingbaseclass
n=1
constructingsubclass
m=2
destructingsubclass
destructingbaseclass
6.分析以下程序的执行结果:
#include<
protected:
intx;
Sample(){x=0;
Sample(intval){x=val;
voidoperator++(){x++;
classDerived:
publicSample
inty;
Derived():
Sample(){y=0;
Derived(intval1,intval2):
Sample(val1){y=val2;
voidoperator--(){x--;
y--;
cout<
x<
y<
Derivedd(3,5);
d.disp();
d++;
d.disp();
d--;
x=3,y=5
x=4,y=5
7分析以下程序执行结果:
classA
A(char*s){cout<
s<
~A(){}
classB:
publicA
B(char*sl,char*s2):
A(sl)
s2<
classC:
C(char*sl,char*s2):
classD:
publicB,publicC
D(char*sl,char*s2,char*s3,char*s4):
B(sl,s2),C(sl,s3)
s4<
Dd("
classA"
classB"
classC"
classD"
);
classB
classC
classD补充例题
1.分析以下程序的执行结果
template<
classT>
Tmax(Tx,Ty)
{return(x>
y?
x:
y);
}
{cout<
max(2,5)<
“,”<
max(3.5,2.8)<
解答:
5,3.52.分析以下程序的执行结果
inta[]={10,20,30,40},*pa=a;
int*&
pb=pa;
pb++;
*pa<
输出为:
203.分析以下程序的执行结果
Tabs(Tx)
0?
-x);
abs(-3)<
abs(-2.6)<
输出为:
3,2.6
4.分析以下程序的执行结果
charc1,c2;
Sample(chara){c2=(c1=a)-32;
c1<
“转换为”<
c2<
Samplea('
a'
),b('
b'
a.disp();
b.disp();
a转换为A
b转换为B5.分析以下程序的执行结果
inta;
int&
b=a;
//变量引用
b=10;
“a=”<
a<
a=106.分析以下程序的执行结果
Sample(){};
Sample(inta){x=a;
Sample(Sample&
a){x=a.x+++10;
voiddisp(){cout<
{Samples1
(2),s2(s1);
x=3//++运算的结果
x