c++第2章类和对象习题.docx

上传人:b****2 文档编号:16880531 上传时间:2023-07-19 格式:DOCX 页数:14 大小:19.30KB
下载 相关 举报
c++第2章类和对象习题.docx_第1页
第1页 / 共14页
c++第2章类和对象习题.docx_第2页
第2页 / 共14页
c++第2章类和对象习题.docx_第3页
第3页 / 共14页
c++第2章类和对象习题.docx_第4页
第4页 / 共14页
c++第2章类和对象习题.docx_第5页
第5页 / 共14页
c++第2章类和对象习题.docx_第6页
第6页 / 共14页
c++第2章类和对象习题.docx_第7页
第7页 / 共14页
c++第2章类和对象习题.docx_第8页
第8页 / 共14页
c++第2章类和对象习题.docx_第9页
第9页 / 共14页
c++第2章类和对象习题.docx_第10页
第10页 / 共14页
c++第2章类和对象习题.docx_第11页
第11页 / 共14页
c++第2章类和对象习题.docx_第12页
第12页 / 共14页
c++第2章类和对象习题.docx_第13页
第13页 / 共14页
c++第2章类和对象习题.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++第2章类和对象习题.docx

《c++第2章类和对象习题.docx》由会员分享,可在线阅读,更多相关《c++第2章类和对象习题.docx(14页珍藏版)》请在冰点文库上搜索。

c++第2章类和对象习题.docx

c++第2章类和对象习题

c++第2章-类和对象习题

《面向对象程序设计》习题

班级:

学号:

姓名:

名单序号:

成绩:

第2章类与对象

一、选择题(共26分,每题1分)

1.下列有关类的说法不正确的是()。

A.对象是类的一个实例

B.任何一个对象只能属于一个具体的类

C.一个类只能有一个对象

D.类与对象的关系和数据类型与变量的关系相似

2.下面()项是对构造函数和析构函数的正确定义。

A.voidX:

:

X(),voidX:

:

~X()

B.X:

:

X(参数),X:

:

~X()

C.X:

:

X(参数),X:

:

~X(参数)

D.voidX:

:

X(参数),voidX:

:

~X(参数)

3.()的功能是对象进行初始化。

A.析构函数B.数据成员C.构造函数D.静态成员函数

4.下列表达方式正确的是()。

A.classP{B.classP{

public:

public:

intx=15;intx;

voidshow(){cout<

};}

C.classP{D.classP{

intf;public:

};inta;

f=25;voidSeta(intx){a=x;}

};

5.拷贝构造函数具有的下列特点中,()是错误的。

A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

B.拷贝构造函数只有一个参数,并且是该类对象的引用

C.拷贝构造函数是一种成员函数

D.拷贝构造函数的名字不能用类名

6.关于静态成员的描述中,()是错误的。

A.静态成员可分为静态数据成员和静态成员函数

B.静态数据成员定义后必须在类体内进行初始化

C.静态数据成员初始化不使用其构造函数

D.静态数据成员函数中不能直接引用非静态成员

7.关于友元的描述中,()是错误的。

A.友元函数是成员函数,它被说明在类体内

B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用

D.友元类中的所有成员函数都是友元函数

8.对类的构造函数和析构函数描述正确的是()。

A. 构造函数可以重载,析构函数不能重载

B. 构造函数不能重载,析构函数可以重载

C. 构造函数可以重载,析构函数也可以重载

D. 构造函数不能重载,析构函数也不能重载

9.类的析构函数的作用是(D)。

A.一般成员函数B.类的初始化C.对象初始化D.删除对象

10.假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。

A.OneClass(OneClassp);B.OneClass&(OneClassp);

C.OneClass(OneClass&p);D.OneClass(OneClass*p);

11.下面对于友元函数描述正确的是()。

A.友元函数的实现必须在类的内部定义

B.友元函数是类的成员

C.友元函数破坏了类的封装性和隐藏性

D.友元函数不能访问类的私有成员

12.对于结构中定义的成员,其默认的访问权限为()。

A.publicB.protectedC.privateD.static

13.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。

A.publicB.protectedC.privateD.static

14.下面对静态数据成员的描述中,不正确的是()。

A.静态数据成员可以在类体内进行初始化

B.静态数据成员不可以在类体内进行初始化

C.静态数据成员不能受private控制符的作用

D.静态数据成员调用前必须初始

15.下面对静态数据成员的描述中,正确的是()。

A.静态数据成员是类的所有对象共享的数据

B.类的每一个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

16.下列有关类的说法不正确的是。

A.类是一种用户自定义的数据类型

B.只有类中的成员函数或类的友元函数才能存取类中的私有数据

C.在类中(用class定义),如果不作特别说明,所有的数据均为私有数据

D.在类中(用class定义),如果不作特别说明,所有的成员函数均为公有数据

17.以下有关析构函数的叙述不正确的是()

A.在一个类只能定义一个析构函数B.析构函数和构造函数一样可以有形参

C.析构函数不允许用返回值D.析构函数名前必须冠有符号“~”

18.以下有关类与结构体的叙述不正确的是()

A.结构体中只包含数据;类中封装了数据和操作

B.结构体的成员对外界通常是开放的;类的成员可以被隐藏

C.用struct不能声明一个类型名;而class可以声明一个类名

D.结构体成员默认为public;类成员默认为private

19.以下叙述中不正确的是()

A.一个类的所有对象都有各自的数据成员,可以共享函数成员

B.一个类中可以有多个同名的成员函数

C.一个类中可以有多个构造函数、多个析构函数

D.在一个类中可以声明另一个类的对象作为它的数据成员

20.以下不属于构造函数特征的是()

A.构造函数名与类名相同B.构造函数可以重载

C.构造函数可以设置默认参数D.构造函数必须指定函数类型

21.以下有关类和对象的叙述不正确的是()

A.任何一个对象都归属于一个具体的类

B.类与对象的关系和数据类型与变量的关系相似

C.类的数据成员不允许是另一个类的对象

D.一个类可以被实例化成多个对象

22.设有定义:

classperson

{intnum;

charname[10];

public:

voidinit(intn,char*m);

...

};

personstd[30];

则以下叙述不正确的是()

A.std是一个含有30个元素的对象数组

B.std数组中的每一个元素都是person类的对象

C.std数组中的每一个元素都有自己的私有变量num和name

D.std数组中的每一个元素都有各自的成员函数init

23.设有以下类的定义:

classEx

{intx;

public:

voidsetx(intt=0);

};

若在类外定义成员函数setx(),以下定义形式中正确的是()

A.voidsetx(intt){...}

B.voidEx:

:

setx(intt){...}

C.Ex:

:

voidsetx(intt){...}

D.voidEx:

:

setx(){...}

24.以下关于静态成员变量的叙述不正确的是()

A.静态成员变量为类的所有对象所公有

B.静态成员变量可以在类内任何位置上声明

C.静态成员变量的赋初值必须放在类外

D.定义静态成员变量时必须赋初值

25.定义静态成员函数的主要目的是()

A.方便调用B.有利于数据隐藏

C.处理类的静态成员变量D.便于继承

26.以下叙述不正确的是(),使用静态数据成员:

A.可以节省内存空间B.是为了解决数据共享问题

C.可以直接用类名来引用D.可以提高序运算速度

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

1.设有如下程序结构:

classBox

{…};

voidmain()

{BoxA,B,C;}

该程序运行时调用次构造函数;调用次析构函数。

2.设A为test类的对象且赋有初值,则语句testB(A);表示。

3.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。

4.OOP技术由、、方法、消息和继承五个基本的概念所组成。

5.类的成员函数可以在定义,也可以在定义。

6.类test的构造函数是和__________同名的函数,析构函数名是。

7.类是用户定义的类型,具有类类型的变量称作______。

8.一个类的析构函数不允许有。

9.建立对象时,为节省内存,系统只给________分配内存。

10.类中的数据和成员函数默认访问类型为。

11.当建立一个新对象时,程序自动调用________。

12.成员函数在类体外定义格式是:

______________________________________。

三、改错题(共10分,每题2分)

1.下面的程序定义了一个Point类,找出程序中的错误语句并改正。

#include

classPoint{

intx;

public:

voidPoint(inta)

{x=a;}

intGetx(){returnx;}

voidShow()

{cout<

};

voidmain()

{PointA(76);

cout<

}

2.根据静态成员的特点,指出下列程序的错误。

#include

#include

classPart

{public:

Part(char*pname=”noname”)

{strncpy(name,pname);

noofpart++;

no=noofpart;

cout<<”createtheno:

”<

}

~Part()

{noofpart--;

cout<<”destroytheno:

”<

}

staticintnumber(){returnno;}

protected:

staticintnoofpart=0;

intno;

charname[40];

};

voidmain()

{Partp1;

Partp2;

}

3.以下程序的功能是:

利用友员函数为类的成员变量进行初始化,然后利用成员函数输出。

请改正程序中的错误,使之能正确运行。

#include

classA

{inta,b;

public:

friendvoidsetval(inti,intj);

voidshowA()

{cout<

};

voidsetval(inti,intj)

{a=i;b=j;}

voidmain()

{Aobj1;

setval(2,3);

obj1.showA();

}

4.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。

#include

classone

{inta1,a2;

public:

one(intx1=0,x2=0);

};

voidmain()

{onedata(2,3);

cout<

cout<

}

5.分析以下程序的错误原因,给出修改方案使之能正确运行。

#include

classAmplifier{

floatinvol,outvol;

public:

Amplifier(floatvin,floatvout)

{invol=vin;outvol=vout;}

floatgain();

};

Amplifier:

:

floatgain(){returnoutvol/invol;}

voidmain()

{Amplifieramp(5.0,10.0);

cout<<"\n\nThegainis=>"<

}

四、看程序写结果(共16分,每题4分)

1.#include

classtest

{public:

test();

test(int);

~test();

voiddisplay();

protected:

intn;

};

test:

:

test(){cout<<”Constructingnormally\n”;}

test:

:

test(intnum)

{n=num;

cout<<”Constructingwithanumber:

”<

}

voidtest:

:

display(){cout<<”Displayanumber:

”<

test:

:

~test(){cout<<”Destructing”<

voidmain()

{testobj1;

testobj2(59);

obj1.display();

obj2.display();

}

2.#include

classCount

{public:

Count(){count++;}

staticintgetn(){returncount;}

~Count(){count--;}

private:

staticintcount;

};

intCount:

:

count=100;

voidmain()

{Countc1,c2,c3,c4;

cout<

:

getn()<

}

3.#include

classmyclass

{inta,b;

public:

voidinit(inti,intj)

{a=i;b=j;}

friendintsum(myclassx);

};

intsum(myclassx)

{returnx.a+x.b;}

voidmain()

{myclassy;

y.init(15,20);

cout<

}

 

4.#include

classpoint

{intx,y;

public:

point(inta,intb)

{x=a;y=b;

cout<<"callingtheconstructorfunction."<

}

point(point&p);

friendpointmove(pointq);

~point(){cout<<"callingthedestructorfunction.\n";}

intgetx(){returnx;}

intgety(){returny;}

};

point:

:

point(point&p)

{x=p.x;y=p.y;

cout<<"callingthecopy_initializationconstructorfunction.\n";

}

pointmove(pointq)

{cout<<"OK!

\n";

inti,j;

i=q.x+10;

j=q.y+20;

pointr(i,j);

returnr;

}

voidmain()

{pointm(15,40),p(0,0);

pointn(m);

p=move(n);

cout<<"p="<

}

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

1.某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记下目前库存货物的总量,要求把商店货物购进和卖出的情况模拟出来。

2.定义一个Car类和Truck类,用友元实现两类对象行使速度的快慢比较。

3.定义一个学生类,其中有3个数据成员:

学号、姓名、年龄,以及若干成员函数。

同时编写main函数使用这个类,实现对学生数据的赋值和输出。

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2