C++面向对象试题题型总结Word文档下载推荐.docx

上传人:b****6 文档编号:22044125 上传时间:2023-02-02 格式:DOCX 页数:22 大小:23.98KB
下载 相关 举报
C++面向对象试题题型总结Word文档下载推荐.docx_第1页
第1页 / 共22页
C++面向对象试题题型总结Word文档下载推荐.docx_第2页
第2页 / 共22页
C++面向对象试题题型总结Word文档下载推荐.docx_第3页
第3页 / 共22页
C++面向对象试题题型总结Word文档下载推荐.docx_第4页
第4页 / 共22页
C++面向对象试题题型总结Word文档下载推荐.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C++面向对象试题题型总结Word文档下载推荐.docx

《C++面向对象试题题型总结Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++面向对象试题题型总结Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。

C++面向对象试题题型总结Word文档下载推荐.docx

{

externintx,y;

cout<

<

add(x,y)<

endl;

}

intx=20,y=5;

intadd(inta,intb)

ints=a+b;

-1-

returns;

A.20B.5C.25D.编译会提示出错信息

12、关于常成员的描述中,错误的是B

A.常成员包含常数据成员和常成员函数两种

B.常数据成员必须是公有的

C.常数据成员要使用构造函数成员初始化列表进行初始化

D.常对象只能调用它的常成员函数,不能调用其它的成员函数

13、关于友元函数的描述中,错误的是B

A.友元函数不是成员函数

B.友元函数只能访问类中私有成员

C.友元函数破坏隐藏性,尽量少用

D.友元函数说明在类体内,使用关键字friend

14、如果有intx,*p;

floaty,*q;

则下面操作正确的是C

A.p=xB.p=q

C.p=&

xD.p=&

y

16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是D

A.数组的长度

B.数组第一个元素的值

C.数组所有元素的值

D.数组第一个元素的地址

17、对于动态分配内存空间描述正确的是D

A.使用new运算符分配的内存空间的长度必需是常量

B.delete运算符可以释放动态的存储空间和静态的存储空间

C.由new分配的内存空间是不连续的

D.delete运算符只能释放由new分配的动态存储空间

18、能够释放对象所占资源的是()A

A.析构函数B.数据成员

C.构造函数D.静态成员函数

19、虚函数的定义是在基类中进行的,定义时需要冠以关键字C

A.staticB.frend

C.virtualD.public

20、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是)C

A.strstreamB.ostrstream

C.ofstreamD.istrstream

二、填空题(共9题16空,每空1分,共16分)

1、函数重载时,编译系统会根据__形参的类型__或__形参的个数__来区分。

与返回类型无关

2、若有chara[80];

则cin>

>

a表示从键盘上读入一个__字符串__到数组a中。

3、若希望用一个已有对象来构造另一个同类型的对象,可以使用__拷贝构造函数__来实现。

4、静态成员(static)属于__类__,而不属于__任何一个对象__,它被同一个类的所有对象共享。

5、类的继承方式有____继承、____继承和____继承。

public(或公有)private(或私有)protected(或保护)

6、重载运算符的含义必须清楚,不能有__二义性__。

7、按照联编进行阶段的不同,联编方法可分为两种:

__动态联编__和__静态联编__。

8、当基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包括返回类型、__函数名__、__参数个数__、参数类型以及参数的顺序都必须与基类中的原型完全相同。

9、C++的I/O是以字节流的形式实现的,每个C++编译系统都带有一个面向对象的输入/输出软件包,这就是I/O流类库。

三、判断题(共10题,每题1分,共10分)

1、C++语言支持封装性和继承性,不支持多态性。

×

2、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。

)×

3、字符串"

sdfgh"

的长度是5。

√占用空间好像是6,字符串有个结尾符号占空间。

4、引用和指针都可作函数参数。

5、友元函数说明在类体内,它是一种成员函数。

说明(定义)在类外,声明在类里面

6、友元类必须被说明为公有成员。

7、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。

8、析构函数不能被继承。

9、运算符重载以后,其优先级和结合性都不能改变。

10、在C++中,函数名实际上是一个指针,它指向函数的入口。

四、分析程序,回答所提出的问题(16分)

1、#include<

classB;

classA

public:

A(inti)

{a=i;

}

friendintF(A&

f1,B&

f2);

private:

inta;

classB

B(inti)

{b=i;

intb;

intF(A&

f2)\\可以访问类A,类B里的任何成员

return(f1.a+f2.b)*(f1.a-f2.b);

An1(10);

//a=10

第3/7页

Bn2(8);

//b=8

F(n1,n2)<

①写出程序的运行结果。

36

②该程序中共有几个对象,分别属于哪个类?

为什么在程序的开头处通过语句classB;

对类B进行声明?

③程序中的哪两条语句会分别调用A、B的构造函数?

写出这两个构造函数。

④函数F是什么函数?

它的作用是什么?

①36

②n1和n2两个对象,n1属于A类,n2属于B类。

因为B类的定义在A类后,而A类中要引用B类。

③语句An1(10);

和语Bn2(8);

A类的构造函数:

A(inti){a=i;

B类的构造函数:

B(inti){b=i;

④函数F是友元函数。

它的作用是:

提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间共享数据的机制。

(关键答出共享数据、或答出通过友元可以访问到封装与类A、B中的数据)

二、

五、阅读程序,写出运行结果(共2题,第1题6分,第2题8分,共14分)

intfunc(inta)

intb=0;

staticintc=4;

\\静态变量

b++;

c--;

return(a+b+c);

voidmain()

inta=2;

for(intj=0;

j<

2;

j++)

func(a+j)<

"

输出结果为:

66

注意66中间有空格

2、#include<

classX

X(inti)

{x=i;

cout<

”int:

”<

i<

’,’<

”called\n”;

X(doublei)

{x=(int)i*2;

”double:

~X()

{cout<

”~X():

x<

intx;

inta=8;

doubleb=11.0;

Xx1(55),x2(a*5);

Xx3=X(2*a);

Xx4=X(b);

int:

55,called//X1被创建

40,called//x2被创建

16,called//x3被创建

double:

11,called//x4被创建x值为22,显示的是i值,不改变

~x<

:

22,called//析构函数的调用顺序与构造函数调用顺序相反

16,called

40,called

50,called

六、编写程序(共2题,第1题10分,第2题14分,共24分)

1、输入一组数据以-1作为结束标志,要求删除其它数据只保留能被2整除的数据并输出结果。

#include<

intb[50],x,n=0;

cin>

x;

while(x!

=-1)

b[++n]=x;

for(inti=1,j=0;

=n;

i++)

if(b[i]%2==0)b[++j]=b[i];

for(i=1;

=j;

b[i]<

'

\t'

2、定义一个日期类Date,包含年、月、日三个数据成员,以及一个求第二天日期的成员函数和输出日期的成员函数。

classDate

intyear,month,day;

Date(inty,intm,intd)

year=y;

month=m;

day=d;

voidnextday();

voiddisplay()

year<

"

/"

month<

day<

voidDate:

nextday()

int

totaldays[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};

day++;

intleap=(year%400==0||year%4==0&

&

year%100!

=0);

if(day>

totaldays[leap][month-1])

day=1;

month++;

if(month>

12)

month=1;

year++;

intd,m,y;

请输入年、月、日:

\n"

y>

m>

d;

Dated1(y,m,d);

今天是:

d1.display();

d1.nextday();

明天是:

 

填空题(每空1分,共14分)

观看以下程序:

classpoint{

voidshow(){cout<

”point”<

pointp1;

point*p;

p=&

p1;

_______________//通过对象p1访问show函数

______________//通过指针p访问show函数

在C++类中可以包含______________、______________和______________三种具有不同访问控制权的成员。

定义类时,在类头中将使用关键字_____________来表示类定义的开始。

如果一个类中至少有一个纯虚函数,则该类称为________________。

C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。

友员函数是用关键字____________修饰的非成员函数。

若有:

inti;

int&

j=i;

i=10;

j=i+1;

则i=__________,j=__________。

8、new的功能是____________________,delete的功能是____________________。

选择题(每小题1.5分,共30分)

1、下列特性中不是面向对象程序设计语言所特有的是()。

(A)数据封装(B)继承(C)多态性(D)模板

2、()是给变量取一个别名,它引入了变量的同意词。

(A)指针(B)引用(C)枚举(D)结构

3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。

(A)share(B)public(C)private(D)protected

4、关于构造函数,下列说法不正确的是()。

(A)构造函数名字和类名相同

(B)构造函数在创建对象时自动执行

(C)构造函数无任何函数返回类型

(D)构造函数有且只有一个

7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()

(A)面向过程  (B)面向对象  (C)安全性  (D)复用性

8、对于类中定义的成员,其隐含访问权限为()。

A.publicB.protected

C.privateD.static

9、下面有关重载函数的说法中正确的是()

(A)重载函数必须具有不同的返回值类型;

  (B)重载函数形参个数必须不同;

  

(C)重载函数必须有不同的形参列表  (D)重载函数名可以不同;

10、有如下的对类“CSample”的说明,其中()是错误的。

  classCSample{   

  A.inta=23;

  B.CSample();

    public:

  C.CSample(intval);

  D.~CSample();

11、在inta=3,int*p=&

a;

中,*p的值是()

A.变量a的地址值B.无意义

C.变量p的地址值D.3

12、每个类()构造函数。

(A)只能有一个(B)只可有公有的

(C)可以有多个(D)只可有缺省的

13、在一个类中可以对一个操作符进行()重载。

(A)1种(B)2种以下(C)3种以下(D)多种

14、在公有继承的情况下,基类非私有成员在派生类中的访问权限()

(A)受限制(B)保持不变(C)受保护(D)不受保护

15、应在下列程序划线处填入的正确语句是()

classBase

{public:

voidfun(){cout<

Base:

fun"

ENDL;

}

classDerived:

publicBase

{voidfun()

{_____________//显示调用基类的函数fun()

Derived:

}

(A)fun();

(B)Base.fun();

(C)Base:

fun();

(D)Base->

16、执行下面的程序将输出()

classBASE{

charc;

public:

BASE(charn):

c(n){}

virtual~BASE(){cout<

c;

};

classDERIVED:

publicBASE{

DERIVED(charn):

BASE(n+1),c(n){}

~DERIVED(){cout<

intmain()

{DERIVEDa('

X'

);

return0;

(A)XY 

(B)YX 

(C)X 

(D)Y

下面描述中,表达错误的是()

(A)公有继承时基类中的public成员在派生类中仍是public的

(B)公有继承是基类中的private成员在派生类中仍是private的  

(C)公有继承时基类中的protected成员在派生类中仍是protected的  

(D)私有继承时基类中的public成员在派生类中是private的

18、定义析构函数时,应该注意()

(A)其名与类名完全相同(B)返回类型是void类型

(C)无形参,也不可重载(D)函数体中必须有delete语句

19、对于在类中定义的静态数据成员,下面正确的说法是()

A.该类的每个对象中都有一个静态数据成员

B.对象创建时产生

C.在类外进行初始化

D.既可以在类外初始化,也可以在类内初始化

20、C++中声明常量的关键字是()。

A.constB.externC.publicD.enum

改错题(每处2分,共6分)

使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:

member=0

member=5

menber=10

源程序文件main.cpp清单如下:

#include<

class 

MyClass

{

  MyClass(int 

i){member=i;

  void 

SetMember(int 

m){member=m;

  int 

GetMember()const{return 

menber;

print()cont{cout<

member="

MEMBER<

private:

member;

};

voed 

main()

{

  MyClass 

obj1;

//更正_____________________________

  obj1.print();

obj2(3);

  obj1.member=5;

//更正__________________________

  MyClass.SetMember(10);

//更正_______________________

  obj2.print();

写出下列程序的执行结果(每小题5分,共20分)

#include<

classSample

{intn;

Sample(inti){n=i;

friendintadd(Sample&

s1,Sample&

s2);

intadd(Sample&

s2)

returns1.n+s2.n;

voidmain()

Samples1(10),s2(20);

add(s1,s2)<

执行结果是:

intadd(intx,inty)

returnx+y+1;

doubleadd(doublex,doubley)

returnx+y-1;

inta=2,b=4;

doublec=2.6,d=7.4;

add(a,b)<

add(c,d)<

执行结果是:

3、

classA

intn;

classB:

virtualpublicA{};

classC:

classD:

publicB,publicC

intgetn(){returnB:

n;

Dd;

d.B:

n=10;

d.C:

n=20;

n<

4、

classmyclass

inta,b;

staticints;

myclass(intx,inty)

{a=x;

b=y;

s++;

voidprint()

{cout<

s<

intmyclass:

s=0;

voidmain()

myclassm1(1,2),m2(4,5),m3(6,7);

m1.print();

m2.print();

m3.print();

编程题(每题10分、共30分)

测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。

(10分)

定义一boat与car两个类,二者都有weight属性,定义二者的一个友元函数totalweight(),计算二者的重量和。

设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。

小车类car是它的派生类,其中包含载人数passenger_load。

每个类都有相关数据的输出方法。

在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。

(1)p1.show();

p->

show()

(2)公有、私有、保护(3)class(4)抽象类

(5)成员函数、不是(6)friend(7)11、11(8)动态申请内存空间、释放由new申请的空间

1、D2、B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1