C++练习题面向对象Word下载.docx

上传人:b****5 文档编号:21204280 上传时间:2023-01-28 格式:DOCX 页数:31 大小:20.39KB
下载 相关 举报
C++练习题面向对象Word下载.docx_第1页
第1页 / 共31页
C++练习题面向对象Word下载.docx_第2页
第2页 / 共31页
C++练习题面向对象Word下载.docx_第3页
第3页 / 共31页
C++练习题面向对象Word下载.docx_第4页
第4页 / 共31页
C++练习题面向对象Word下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C++练习题面向对象Word下载.docx

《C++练习题面向对象Word下载.docx》由会员分享,可在线阅读,更多相关《C++练习题面向对象Word下载.docx(31页珍藏版)》请在冰豆网上搜索。

C++练习题面向对象Word下载.docx

classCsample

{

inta;

Csample(Csampleample);

Csample(intval):

a(val)

{}

~Csample();

};

6、判断下面程序的输出:

#include"

iostream.h"

inta=0,b=0;

classA

public:

inta,b;

voidf(intc=2,intd=3)

{

a=c;

b=d;

}

voidf(intc=3,intd=4)

b=d;

An;

n.f();

n.a<

'

'

n.b<

endl;

f();

n.f(7,8);

a<

b<

7、关于缺省构造函数的下述描述中,是错误的。

A.如果没有定义构造函数或缺省构造函数,编译器会自动生成缺省构造函数。

B.如果类有缺省构造函数,则可以不传递参数而定义类对象。

C.缺省构造函数不对类对象数据成员赋初值。

D.如果定义了类的构造函数,则编译器不再生成缺省构造函数。

8、下面程序输出结果为。

#include"

public:

virtualvoidf()

{cout<

"

A:

:

f()"

voidg()

{f();

}

classB:

publicA

virtualvoidf()

B:

{Aa2;

a2.g();

A*pa=newB();

pa->

f();

Bb;

b.f();

a2=b;

a2.f();

A&

a=b;

a.f();

deletepa;

9、以下哪种构造函数不是单参数构造函数?

A.复制构造函数

B.只有第一个参数,其它参数为缺省的构造函数。

C.缺省构造函数。

D.转换构造函数。

10、下面的程序中有什么错。

#include”iostream.h”

{private:

inta;

voidf1()const

a=2;

’‘<

intf2(constintc)

a=3;

c=a;

returnc;

};

constint*f3()

staticintz=0;

z++;

return&

z;

voidmain()

Aa;

a.f1()<

a.f2(3);

*f3()=5;

*f3();

11、下面程序中对成员函数f1()﹑f2()﹑f3()的访问中,错误的是。

voidf1()

cout<

f1()called"

protectedA

voidf2()

f2()called"

classC:

privateB

voidf3()

f1();

f3called"

Cc;

c.f2();

c.f3();

b.f2();

12、派生类的构造函数的成员初始化列表中,不能包含。

A.基类的构造函数。

B.派生类中对象成员的初始化。

C.基类中对象成员的初始化。

D.派生类中一般数据成员的初始化。

13、有关虚基类的描述中错误的是。

A.最派生类构造函数中的虚基类构造函数会被调用。

B.虚基类可以消除二义性。

C.每个派生类构造函数成员初始化器表中都包含有对虚基类构造函数的调用,故虚基类构造函数会被调用多次。

D.虚基类只有一个。

14、关于虚析构函数的下述描述中,是错误的。

A.基类中析构函数为虚析构函数,则派生类中的析构函数也为虚析构函数。

B.虚析构函数能保证delete运算符有效的释放基类及派生类对象。

C.将析构函数定义为虚析构函数是因为类中有虚函数。

D.虚析构函数并不能实现动态联编。

15、关于纯虚函数和抽象类的描述中,是错误的。

A.纯虚函数没有函数体。

B.抽象类及其派生类都可以定义对象。

C.若某个成员函数为纯虚函数,则该类为抽象类。

D.抽象类通常在类结构的顶层。

16、判断下面程序的输出结果。

#include"

string.h"

A(char*st);

~A();

staticinta;

private:

charstring[50];

A(char*st)

strcpy(string,st);

string<

~A()

a=2;

voidfun()

AFunobj("

fun"

);

staticAStaobj("

sta"

AGlobobj("

Glob"

intb=A:

AMainobj("

Main"

cout<

for(inti=0;

i<

i++)

fun();

17、下面的语句中使用错误的为。

#include<

iostream.h>

classctest

staticintcount;

inttest;

staticintgetcount()

count=test;

returncount;

intsettest(constint&

test=a;

returntest;

intctest:

count=5;

constctestt1;

t1.settest(5);

t1.getcount();

18、下面程序输出结果。

A(intj){b=j;

intfun(intc)

{return(a+b*c);

intb;

Ax(8);

intA:

*pa;

pa=&

x.*pa=6;

int(A:

*pf)(int);

pf=A:

fun;

A*p=&

x;

(p->

*pf)

(2);

19、下面程序的输出结果为。

A()

{a=0;

A'

sD.C.\n"

;

A(inti)

{a=i;

sC.\n"

~A()

{cout<

sD.\n"

{

Aa1;

Aa2[4]={

A(),

a1,

5,

2.3

20、下面程序输出结果。

A(constchar*s)

s<

~A(){}

virtualpublicA

B(constchar*s1,constchar*s2)

A(s1)

s2<

C(constchar*s1,constchar*s2)

classD:

publicC,publicB

D(constchar*s1,constchar*s2,

constchar*s3,constchar*s4)

B(s1,s3),C(s1,s2),b(s3,s4),a(s1),A(s4)

s1<

Aa;

Bb;

D*ptr=newD("

A"

"

B"

C"

D"

deleteptr;

21、下面程序输出结果。

virtualvoidact1();

voidact2();

voidact3(){act1();

act2();

voidA:

act1()

A1"

act2()

A2"

{public:

voidact1();

voidB:

B1"

B2"

a1=b;

A*a2=newA();

b.act3();

b.act1();

a1.act3();

a1.act1();

a2->

act3();

22、下面程序输出结果。

A(){}

f\n"

voidh()

h"

B(){f();

publicB

C(){}

C:

voidg(A*aa)

aa->

h();

B*bp=newC;

g(bp);

bp->

h()

deletebp;

23、下面程序输出结果。

A(inti,intj){a=i,b=j;

voidmove(intx,inty)

{a+=x;

b+=y;

voidshow()

protected:

inta,b;

B(inti,intj,intk,intl)

A(i,j),x(k),y(l)

{}

x<

y<

voidfun(){move(7,8);

voidf1(){A:

show();

intx,y;

Ae(5,6);

Bd(1,2,3,4);

d.fun();

d.show();

e.show();

d.f1();

24、下面程序输出结果。

virtual~A()

~A\n"

~B()

~B\n"

A*a1;

A*a2=newB();

a1=&

25、下面程序输出结果。

A(inti)

{m=i;

CON."

m<

A(inti,intj)

j=8;

'

j<

voidprint()

DES."

intm;

Amy=5;

my.print();

my=6;

26﹑阅读下面程序并填空:

classcmessage

char*buffer;

cmessage()

{buffer=newchar('

\0'

cmessage(

(1))

(2)

~cmessage()

{deletebuffer;

voiddisplay()

buffer<

\n'

voidset(char*string)

{delete[]buffer;

buffer=newchar[strlen(string)+1];

strcpy(buffer,string);

(3)operator=((4))

(5)

{cmessagemessage1;

message1.set("

hello"

cmessagemessage2(message1);

cmessagemessage3;

cmessagemessage4;

message4=message3=message2;

27.修改下面语句中错误。

inta1;

inta2;

protectA

intb1;

intb2;

classC:

privateB

intc1;

intc2;

intg()

c<

a2<

b1;

classD:

publicC

{private:

intd;

voidf()

a1<

b2;

{Dde;

de.b2;

de.c2;

28填空下面程序将++运算符重载为成员函数。

classcounter

counter(){v=0;

(1)operator++

(2)

v++;

return(3);

(4)operator++(5)

countert;

t.v=v++;

return(6);

voidprint()

v<

unsignedv;

counterc;

counterd;

for(intj=0;

8;

j++)

{d=c++;

d.print();

for(j=0;

{d=++c;

29.下面程序中错误语句:

vitualvoidf()=0;

cin>

>

a>

b>

endl<

A*a=newB();

a.f();

b.A:

deletea;

30、下面程序输出。

intj;

A()

{j=0;

A(A&

{j=a.j;

con1"

A(intd)

{j=d;

con2"

des"

Af1(Aa)

Ab;

b=a;

returnb;

An(5),m;

m=f1(n);

31.下面程序的输出结果。

A&

f1(constA&

staticAb;

Am;

m=f1(5);

32、下面程序的输出结果。

voidoperator=(constA&

j=a.j;

ope"

m=35;

An=36;

Ak=m;

m=n;

33、下面程序的输出结果。

staticintdys[]={30,28,31,30,31,

30,31,31,30,31,30,30};

classdate

intmo,da,yr;

date(intm,intd,inty)

{mo=m;

da=d;

yr=y;

date(){}

voiddisplay()

mo<

/"

da<

yr<

dateoperator+(intday)

datedt=*this;

day+=dt.da;

while(day>

dys[dt.mo-1])

{

day-=dys[dt.mo-1];

if(++dt.mo==13)

{

dt.mo=1;

dt.yr++;

}

}

dt.da=day;

returndt;

dated1(12,10,2003),d2;

d2=d1+60;

d2.display();

34、指出下面程序的语句中的错误。

{a=i;

voidfa()

{c

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

当前位置:首页 > 工程科技 > 兵器核科学

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

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