C++复习资料Word文档格式.docx
- 文档编号:18791563
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:29
- 大小:27.45KB
C++复习资料Word文档格式.docx
《C++复习资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++复习资料Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
13.下列函数原型声明中错误的是()。
A.voidFun(intx=0,inty=0)
B.voidFun(intx,inty)
C.voidFun(intx,inty=0)
D.voidFun(intx=0,inty)
14.有以下类定义
classMyClass
{
public:
MyClass(){cout<
<
1;
}
};
则执行语句MyClassa,b[2],*p[2];
后,程序的输出结果是()。
A.11B.111C.1111D.11111
15.在C++中用来实现运行时多态性的是()。
A.重载函数B.析构函数
C.构造函数D.虚函数
16.在一个类体的下列声明中,正确的纯虚函数声明是()。
A.virtualvoidvf()=0B.voidvf(int)=0
C.virtualintvf(int)D.virtualvoidvf(int){}
17.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()。
A.类B.对象C.函数体D.数据块
18.一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()。
A.递归函数B.重载函数C.内联函数D.嵌套函数
19.在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()。
A.公有成员B.私有成员C.保护成员D.保护成员或私有成员
20.静态成员函数没有()。
A.返回值B.this指针C.指针参数D.返回类型
21.有关多态性说法不正确的是()。
A.C++语言的多态性分为编译时的多态性和运行时的多态性
B.编译时的多态性可通过函数重载实现
C.运行时的多态性可通过模板和虚函数实现
D.实现运行时多态性的机制称为动态多态性
22.类MyA的拷贝初始化构造函数是()。
A.MyA()B.MyA(MyA*)C.MyA(MyA&
)D.MyA(MyA)
23.友元关系不能()。
A.提高程序的运行效率B.是类与类的关系
C.是一个类的成员函数与另一个类的关系D.继承
24.下列不是描述类的成员函数的是()。
A.构造函数B.析构函数C.友元函数D.拷贝构造函数
25.如果从原有类定义新类可以实现的是()。
A.信息隐藏B.数据封装C.继承机制D.数据抽象
26.下面有关类说法不正确的是()。
A.一个类可以有多个构造函数B.一个类只有一个析构函数
C.析构函数需要指定参数
D.在一个类中可以说明具有类类型的数据成员
27.下列有关重载函数的说法中正确的是()。
A.重载函数必须具有不同的返回值类型
B.重载函数参数个数必须相同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
28.关于new运算符的下列描述中,错误的是()。
A.它可以用来动态创建对象和对象数组
B.使用它创建的对象或对象数组可以使用运算符delete删除
C.使用它创建对象时要调用构造函数
D.使用它创建对象数组时必须指定初始值
29.以下基类中的成员函数表示纯虚函数的是()。
A.virtualvoidtt()=0
B.voidtt(int)=0
C.virtualvoidtt(int)
D.virtualvoidtt(int){}
30.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()。
A.constchar*p=“ABCD”;
B.char*constp=“ABCD”;
C.charconst*p=“ABCD”;
D.constchar*constp=“ABCD”;
31.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()。
A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数
C.引进了类和对象的概念D.规定函数说明符必须用原型
32.对于int*pa[5];
的描述,正确的是()。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素
B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
C.pa[5]表示某个数组的第5个元素的值
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
33.当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()。
A.都是虚函数B.只有被重新说明时才是虚函数
C.只有被重新说明为virtual时才是虚函数D.都不是虚函数
34.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()。
B.char*constp=“ABCD”;
D.constchar*constp=“ABCD”;
35.若Sample类中的一个成员函数说明如下:
voidset(Sample&
a),则Sample&
a的含义是()。
A.指向类Sample的名为a的指针B.将a的地址赋给变量Set
C.a是类Sample的对象引用,用来作函数Set的形参
D.变量Sample与a按位与的结果作为函数Set的参数
36.类的析构函数是对一个对象进行以下哪种操作时自动调用的是()。
A.建立B.撤销C.赋值D.引用
37.如果类A被说明成类B的友元,则()。
A.类B不一定是类A的友元B.类B的成员即类A的成员
C.类A的成员即类B的成员D.类A的成员函数不得访问类B的成员
38.静态成员函数没有()。
39.适宜采用inline定义函数情况是()。
A.函数体含有循环语句B.函数体含有递归语句
C.函数代码少、频繁调用D.函数代码多、不常调用
40.在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()。
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的公有成员
41.在派生类中定义虚函数时,可以与基类中相应的虚函数不同的是()。
A.参数类型B.参数个数C.函数体D.函数名称
42.已知:
p是一个指向类A数据成员m的指针,A1是类A的一个对象。
如果要给m赋值为5,正确的是()。
A.A1.p=5;
B.A1->
p=5;
C.A1.*p=5;
D.*A1.p=5;
1.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成。
2.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句。
3.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行。
4.在C++中函数原型不但要标识一个函数的返回类型,同时还要标识该函数的。
5.类A的后置自增运算符++以成员函数的形式进行重载,其在类内的函数声明是。
6.如果类的名称是MyClass则析构函数名为,一个类最多能有个析构函数。
7.假设类X的对象x是类Y的成员对象,则“YObj”语句执行时,先调用类的构造函数,再调用类的构造函数。
8.基类的公有成员在私有派生类中是成员,基类的保护成员在公有派生类中是成员。
9.对虚函数使用对象指针或引用,系统使用联编,对虚函数使用对象调用时,系统使用联编。
10.在C++中,访问指针所指向的对象的成员使用运算符。
11.抽象类中至少要有一个函数。
12.如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是____________类型或____________类型。
13.____________类只能作为基类使用,而不能声明它的对象。
14.进行函数重载时,被重载的同名函数如果都没有用const修饰,则它们的形参____________或____________必须不同。
15.拷贝构造函数的形参必须是本类对象的____________。
16.在面向对象程序设计中,将一组数据和这组数据有关的操作集合组装在一起形成对象,这个过程叫____________;
不同的对象可以调用相同名称的函数并导致完全不同的行为的现象称为____________。
17.假如一个类的名称为MyClass,则这个类缺省的构造函数名称为
______________;
使用这个类的一个对象初始化该类的另一个对象时,可以调用____________构造函数来完成此功能。
18.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行____________。
19.动态联编是通过基类类型的指针或引用调用____________函数来完成。
20.基类的保护成员通过私有派生后,其在派生类中的访问权限是
______________。
21.this指针始终指向调用成员函数的______________。
22.双目运算符作为类成员函数重载时,形参个数为个。
23.从实现的角度划分,C++所支持的两种多态性分别是时的多态性和运行时的多态性。
24.将—个函数声明为一个类的友元函数必须使用关键字。
25.在C++类中可以包含、和三种具有不同访问控制权的成员。
26.定义在类内部的函数默认状态为,在类外部每次调用该函数时,定义的函数代码会在调用函数位置展开。
27.是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象和其他内部管理操作。
28.C++中的类有两种用法:
一种是类的实例化,即生成类的对象,并参与系统的运行;
另一种是通过,派生出新的类。
29.假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调用构造函数来完成此功能。
30.基类的公有成员在派生类中的访问权限由决定。
31.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句。
32.单目运算符作为类成员函数重载时,形参个数为个。
33.若有函数定义为:
intadd(intml=0,intm2=2,intm3=4)
{returnml+m2+m3;
在主函数中有ints=add
(1)+add(0,1)+add(0,1,2);
则执行此语句后s的值为。
1.阅读下列程序并写出程序的输出结果。
#include<
iostrcam>
Usingnamespacestd;
classmyclass{
public:
myclass(){++count;
~myclass(){--count;
staticintgetcount(){returncount;
private:
staticintcount;
intmyclass:
:
count=0;
intmain()
{myclassobj;
cout<
"
1countis"
obj.getcount()<
endl;
myclass*ptr=newmyclass;
cout<
2countis"
myclass:
getcount()<
deleteptr;
3countis"
return0;
程序的运行结果为:
2.阅读下列程序并写出程序的输出结果。
#include<
iostream>
usingnamespacestd;
classB{
virtualvoidshow(){cout<
Bclassshow"
};
classD:
publicB{
voidshow(){cout<
Dclassshow"
voidfun1(B*ptr){ptr->
show();
voidfun2(B&
ref){ref.show();
voidfun3(Bb){b.show();
intmain()
{Bb,*p=newD;
Dd;
fun1(p);
fun2(b);
fun3(d);
deletep;
return0;
}
3.阅读下列程序并写出程序的输出结果。
#include<
usingnamespacestd;
classpart{
part(intx=0):
val(x){cout<
partconstructor"
val<
private:
intval;
classwhole{
whole(intx,inty,intz=0):
p2(x),p1(y),val(z){
wholeconstructor"
partp1,p2;
wholeobj(1,2,3);
return0;
}
4.阅读下列程序并写出程序的输出结果。
iostream.h>
classNum{
intX,Y;
Num(intx,inty=0){X=x;
Y=y;
voidvalue(intx,inty=0){X=x;
voidvalue(){
value:
"
X;
if(Y!
=0)cout<
(Y>
0?
'
+'
-'
)<
Y:
-Y)<
i'
;
intmain()
{Numn
(1);
n.value();
n.value(2,3);
n.value();
Numm(3,-4);
m.value();
return0;
5.#include<
classMyClass{
intx=20,y;
MyClass(intaa,intbb){x=aa;
y=bb;
intGetX(){returnx;
intGetY(){returny;
{MyClassobj(10,20);
错误原因及修改意见:
6.#include<
classOne{
inta;
voidsetOne(intx){a=x;
voidshowOne(){cout<
a="
a<
classTwo:
privateOne{
voidsetTwo(intx){a=x;
{Twoobj;
obj.setTwo(10);
obj.a="
obj.a<
7.下面程序实现输出半径为2.5的圆的面积,但输出结果是0,找出原因并提出修改意见。
classpoint{
floatx,y;
floatarea(){return0.0;
constfloatpi=3.14159f;
classcircle:
publicpoint{
floatradius;
voidsetRadius(floatr){radius=r;
floatarea(){returnpi*radius*radius;
{point*p;
circlec;
c.setRadius(2.5);
p=&
c;
Theareaofcircleis"
p->
area()<
8.#include<
classPoint{
Point(){X=0;
Y=0;
}
Point(intx=0,inty=0){X=x;
voiddisplay(){cout<
X<
"
Y<
{pointa;
pointb(2,3);
a.display();
b.display();
9.请填上适当内容,以使程序完整,并使程序的输出为:
2,1
4,3
classA{
inta;
A(inti=0){a=i;
intGeta(){returna;
classB{
Aa;
intb;
B(inti=0,intj=0):
{}
a.Geta()<
′,′<
b<
intmain()
Bb[2]={B(1,2),B(3,4)};
for(inti=0;
i<
2;
i++)
;
11.程序中A是抽象类。
请填上适当内容,以使程序完整,并使程序的输出为:
B1called
B2called
#include<
classA{
;
classB1:
publicA{
”B1called”<
classB2:
”B2called”<
voidshow(){
p->
display();
{B1b1;
B2b2;
A*p[2]={&
b1,&
b2};
show(p[i]);
12.请填上适当内容,以使程序完整,并使程序的输出为5。
classInteger{
intx;
Integer(inta=0){x=a;
x<
IntegerMax(Integera,Integerb)
if()
returna;
returnb;
{Integera(3),b(5),c;
c=Max(a,b);
c.display();
13.请按下面注释的提示,将类B的构造函数定义补充完整。
inta;
A(intaa=0){a=aa;
classB:
publicA{
intb;
Ac;
//用aa初始化基类A,用aa+1初始化类对象成员c
B(intaa):
{b=aa+2;
14.阅读下列程序并写出程序的输出结果。
usingnamespa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习资料
![提示](https://static.bdocx.com/images/bang_tan.gif)