C++期末热身第二部分Word格式.docx
- 文档编号:20619856
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:34
- 大小:22.31KB
C++期末热身第二部分Word格式.docx
《C++期末热身第二部分Word格式.docx》由会员分享,可在线阅读,更多相关《C++期末热身第二部分Word格式.docx(34页珍藏版)》请在冰豆网上搜索。
②a1->
p=5;
③a1.*p=5;
④*a1.p=5;
9、已知类A中一个成员函数说明如下:
voidSet(A&
a)
其中,A&
a的含意是(3)。
1指向类A的指针为a
②将A的地址值赋给变量Set
③a是类A的对象的引用,用来作函数Set()的形参
④变量A与a按位相与作为函数Set()的参数
10、有以下类的说明,请指出错误的地方ABCD
classCSample
{
private:
inta=2.5;
(A)
CSample;
(B)
public:
CSample(intval);
(C)
~CSample;
(D)
};
11、下面程序的输出结果是( 1 )
#include<
iostream>
usingnamespacestd;
classpoint
{
public:
voidpoi(intpx=10,intpy=10)
{x=px;
y=py;
}
getpx()
{returnx;
getpy()
{returny;
private:
intx,y;
};
intmain()
pointp,q;
p.poi();
q.poi(15,15);
cout<
<
“p点的坐标是:
”<
p.getpx()<
“,”;
p.getpy()<
endl;
“q点的坐标是:
q.getpx()<
q.getpy()<
return0;
①p点的坐标是:
10,10②p点的坐标是:
0,0
q点的坐标是:
15,15q点的坐标是:
15,15
③p点的坐标是:
0,0④p点的坐标是:
10,10
0,0q点的坐标是:
12、下列关于对象数组的描述中,(4)是错误的。
①对象数组的下标是从0开始的②对象数组的数组名是一个常量指针
2对象数组的每个元素是同一个类的对象④对象数组只能赋初值,而不能被赋值
13、下列定义中,
(2)是定义指向数组的指针p。
①int*p[5]②int(*p)[5]③(int*)p[5]④int*p[]
14、具有转换函数功能的构造函数,应该是
(2)。
①不带参数的构造函数②带有一个参数的构造函数
③带有两个以上参数的构造函数④默认构造函数
15、关于多继承二义性的描述中,(3)是错的。
①一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
②解决二义性的最常用的方法是对成员名的限定法
③基类和派生类中同时出现的同名函数,也存在二义性问题
④一个派生类是从两个基类派生来的,而这两个基类又有一个共同点基类,对该基类
成员进行访问时,有可能存在二义性
16、下列关于运算符重载的描述中,(4)是正确的。
①运算符重载可以改变操作数的个数②运算符重载可以改变优先级
③运算符重载可以改变结合性④运算符重载不可以改变语法结构
/17、关于动态联编的下列描述中,()是错误的。
①动态联编是一虚函数我基础的
②动态联编是在运行时确定所调用的函数代码的
③动态联编调用函数操作是用指向对象的指针或对象引用
④动态联编是在编译时确定操作函数的
18、关于虚函数的描述中,(3)是正确的。
①虚函数是一个static类型的成员函数②虚函数是一个非成员函数
③基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数
④派生类的虚函数与基类的虚函数具有不同的参数个数和类型
19、下列描述中,(4)是抽象类的特性。
①可以说明虚函数②可以进行构造函数重载
3可以定义友元函数④不能说明其对象
20、在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则
(1)。
①完全相同②完全不同③部分相同,部分不同④以上都不对
21、(3)是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。
①虚析构函数②虚构造函数③纯虚函数④静态成员函数
22、如果一个类至少有一个纯虚函数,那么就称该类为
(1)。
①抽象类②虚基类③派生类④以上都不对
二、判断题
1、一个类的构造函数中可以不包含对其子对象的初始化。
(T)
2、派生类是从基类派生出来,它不能再生成新的派生类。
(F)
3、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
4、单继承情况下,派生类中对基类成员的访问也会出现二义性。
5、构造函数可以被继承。
6、析构函数不能被继承。
7、解决多继承情况下出现二义性的方法之一是使用成员名限定法。
8、子类型是不可逆的。
9、派生类是它的基类的组合。
/10、只要是类M继承了类N,就可以说类M是类N的子类型。
11、如果A类型是B类型的子类型,则A类型必然适应于B类型。
12、重载运算符保持原运算符的优先级和结合性不变。
13、构造函数说明为纯虚函数是没有意义的。
14、抽象类是指一些没有说明对象的类。
15、动态联编是在运行时选定调用的成员函数的。
三、填空题
1、以下程序的执行结果是567。
#include<
usingnamespacestd;
classSample
intx;
voidsetx(inti){x=i;
intputx(){returnx;
intmain()
Sample*p;
SampleA[3];
A[0].setx(5);
A[1].setx(6);
A[2].setx(7);
for(intj=0;
j<
3;
j++)
{
p=&
A[j];
cout<
p->
putx()<
”“;
}
cout<
endl;
return0;
}
2、以下程序的执行结果是构造函数。
i=10
i=20。
Sample()
”构造函数。
voidfn(inti)
staticSamplec;
”i=”<
i<
fn(10);
fn(20);
return0;
3、以下程序的执行结果是x=5。
#include<
classA
public:
intx;
voidfun(inti){x=i;
Ac;
intA:
*p=&
x;
c.*p=2;
void(A:
*pfun)(int)=A:
fun;
(c.*pfun)(5);
”x=”<
c.x<
4、以下程序的执行结果是fun1:
7
fun2:
15。
A(inti){x=i;
voidfun1(intj){x+=j;
”fun1:
x<
voidfun2(intj){x+=j;
”fun2:
Ac1
(2),c2(5);
fun1;
(c1.*pfun)(5);
pfun=A:
fun2;
(c2.*pfun)(10);
5、以下程序的执行结果是97。
Sample(){};
voidsetx(inti){x=i;
friendintfun(SampleB[],intn)
intm=0;
for(inti=0;
n;
i++)
if(B[i].x>
m)m=B[i].x;
returnm;
SampleA[10];
intArr[]={90,87,42,78,97,84,60,55,78,65};
for(inti=0;
10;
A[i].setx(Arr[i]);
fun(A,10)<
6、以下程序的执行结果是1
3。
inta;
voidseta(intx){a=x;
voidshowa(){cout<
a<
classB
intb;
voidsetb(intx){b=x;
voidshowb(){cout<
b<
classC:
publicA,privateB
intc;
voidsetc(intx,inty,intz)
c=z;
seta(x);
setb(y);
voidshowc(){cout<
c<
Cc;
c.seta
(1);
c.showa();
c.setc(1,2,3);
c.showc();
7、以下程序的执行结果是(1,2)
5,6
(6,9)。
A(inti,intj){a=i;
b=j;
voidmove(intx,inty)
{
a+=x;
b+=y;
}
voidshow()
cout<
”(“<
”,”<
”)”<
private:
inta,b;
classB:
privateA
B(inti,intj,intk,intl):
A(i,j)
x=k;
y=l;
y<
voidfun(){move(3,5);
voidf1(){A:
show();
intx,y;
Ae(1,2);
e.show();
Bd(3,4,5,6);
d.fun();
d.show();
d.f1();
8、以下程序的执行结果是a=0b=0c=0
a=1b=0c=0
a=1b=3c=0
a=1b=3c=5。
A(){a=0;
b=0;
A(inti){a=i;
A(inti,intj){a=i;
voiddisplay(){cout<
"
a="
b="
b;
publicA
B(){c=0;
B(inti):
A(i){c=0;
B(inti,intj):
A(i,j){c=0;
B(inti,intj,intk):
A(i,j){c=k;
voiddisplay1()
{display();
c="
{Bb1;
Bb2
(1);
Bb3(1,3);
Bb4(1,3,5);
b1.display1();
b2.display1();
b3.display1();
b4.display1();
9、以下程序的执行结果是30,30。
classPoint
intx,y;
Point(intvx,intvy){x=vx;
y=vy;
Point(){x=0;
y=0;
Pointoperator+(Pointp1)
Pointp;
intpx=x+p.x;
intpy=y+p.y;
returnPoint(px,py);
Pointoperator-(Pointp1)
intpx=x-p1.x;
intpy=y-p1.y;
voidprint()
};
intmain()
Pointp1(10,10),p2(20,20);
p1=p1+p2;
p1.print();
10、以下程序的执行结果是baseclass
deriveclass
derive2class。
classbase
virtualvoidwho()
”baseclass”<
classderive:
publicbase
voidwho()
”deriveclass”<
classderive2:
”derive2class”<
baseobj1,*p;
deriveobj2;
derive2obj3;
p=&
obj1;
p->
who();
obj2;
obj3;
11、以下程序的执行结果是f1functionofbase
f2functionofbase
f3functionofbase
f1functionofderive
f4functionofderive。
virtualvoidf1()
”f1functionofbase”<
virtualvoidf2()
”f2functionofbase”<
virtualvoidf3()
”f3functionofbase”<
virtualvoidf4()
voidf1()
”f1functionofderive”<
voidf2(intx)
”f2functionofderive”<
voidf4()
”f4functionofderive”<
f1();
f2();
f3();
p=&
f4();
12、以下程序的执行结果是(10,20)
(13,23)
(16,26)。
iostream.h>
Point(){x=0;
Point(unsignedx,unsignedy)
Point:
x=x;
y=y;
unsignedgetx(){returnx;
unsignedgety(){returny;
voidprint()
”Point(“<
friendPointoperator+(Point&
pt,intnoffset);
friendPointoperator+(intnoffset,Point&
pt);
unsignedx,y;
Pointoperator+(Point&
pt,intnoffset)
Pointptemp=pt;
ptemp.x+=noffset;
ptemp.y+=noffset;
returnptemp;
Pointoperator+(intnoffset,Point&
pt)
Pointpt(10,20);
pt.print();
pt=pt+3;
pt=3+pt;
四、程序分析题
1、分析下列程序的输出结果(注:
除了给出结果外,还要进行简单分析)
classL
voidInitL(intx,inty){X=x;
Y=y;
voidMove(intx,inty){X+=x;
Y+=y;
intGetX(){returnX;
intGetY(){returnY;
intX,Y;
classR:
publicL
voidInitR(intx,inty,intw,inth)
InitL(x,y);
W=w;
H=h;
intGetW(){returnW;
intGetH(){returnH;
intW,H;
classV:
publicR
voidfun(){Move(3,2);
Vv;
v.InitR(10,20,30,40);
v.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 期末 热身 第二 部分