面向对象的程序设计基础Word格式.docx
《面向对象的程序设计基础Word格式.docx》由会员分享,可在线阅读,更多相关《面向对象的程序设计基础Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
B、内联函数的定义必须出现在内联函数第一次被调用之前;
C、内联函数中能够包括各种语句;
D、寸内联函数不能够进行异常接口声明;
9.在C++中,关于下列设置缺省参数值的描述中,()是正确
的。
A、不允许设置缺省参数值;
B、在指定了缺省值的参数右边,不能出现没有指定缺省值的
参数;
C、只能在函数的定义性声明中指定参数的缺省值;
D、设置缺省参数值时,必须全部都设置;
10.()不是构造函数的特征。
A、构造函数的函数名与类名相同;
B、构造函数能够重载;
C、构造函数能够设置缺省参数
D、构造函数必须指定类型说明
11.是析构函数的特征。
A、析构函数能够有一个或多个参数;
B、析构函数名与类名不同;
C、析构函数的定义只能在类体内;
D、一个类中只能定义一个析构函数
12.C++对C语言作了很多改进,下列描述中()使得C语言发
生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符;
B、允许函数重载,并允许设置缺省参数;
C、规定函数说明必须用原型;
D、引进了类和对象的概念
13.下列描述中,()是错误的。
B、内联函数的定义
必须出现在内联函数第一次被调用之前;
D、对内联函数不能够进行异常接口声明;
14.在C++中,关于下列设置缺省参数值的描述中,()是正确
B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数
D、设置缺省
参数值时,必须全部都设置;
15.在进行完任何C++流的操作后,都能够用C++流的有关成员函数检测流的状态;
其中只能用于检测输入流状态的操作函数名称是()。
AfailBeof
CbadDgood
16.C++语言是从早期的C语言逐渐发展演变而来的。
与C语言相
比,它在求解问题方法上进行的最大改进是()。
A面向过程B面向对象
C安全性D复用性
17.C++对C语言作了很多改进,即从面向过程变成为面向对象的
主要原因是
A.增加了一些新的运算符B.允许函数重载,
并允许设置缺省参数
C.规定函数说明符必须用原型D.引进了类和对象的
概念
18.
C++源程序文件的缺省扩展名是
D.
obj
lik
19.在inta=3,int*p=&
a;
中,*p的值是
20.类的析构函数是在调用的。
A.类创立时B.创立对象时
C.删除对象时D.不自动调用
21•假定AB为一个类,则执行ABX;
语句时将自动调用该类的
A.有参构造函数
B.
无参构造函
数
C.拷贝构造函数
赋值构造函
22.假定要对类AB定义加号操作符重载成员函数
实现两个AB类
对象的加法,并返回相加结果,则该成员函数的声明语句为:
A.ABoperator+(AB&
a,AB&
b)B.ABoperator+(AB&
a)
C.operator+(ABa)
D.AB&
operator+()
23•假定AB为一个类,贝卩执行ABX;
A.有参构造函数B.无参构造函数
)
25•假定AB为一个类,贝卩该类的拷贝构造函数的声明语句为
A.AB&
(ABx);
B.AB(ABx)C.
AB(AB&
);
D.AB(AB*x)
26.下列哪项不是面向对象程序设计的主要特征?
A.封装B.继承C.多态D结构
27.对象之间的相互作用和通信是经过消息。
下列哪项不是消息的组成部分?
A接受消息的对象B要执行的函数的名字
C.要执行的函数的内部结构D函数需要的参数
28.关于C++与C语言关系的描述中,()是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容
的
C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的
29.已知:
类A中一个成员函数说明如下:
voidSet(A&
a);
其中,A&
的含义是()。
A.指向类A的指针为a
B将a的地址值赋给变量Set
C.a是类A对象的引用,用来作函数Set()的参数
D.变量A与a按位与作为函数Set()的参数
30.已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。
A.voidprint()const;
B.constvoidprint();
Cvoidconstprint();
D.voidprint(const);
31.如果类A被说明成类B的友元,则
A.类A的成员即类B的成员B.类B的成员即类
A的成员
C.类A的成员函数不得访问类B的成员D.类B不一定是类A
的友元
32.
假定AB为一个类,
则执行ABx;
A.
有参构造函数
无参构造函数
C
拷贝构造函数
33.
下面的函数声明中,
是”
voidBC(inta,intb);
的重载函数?
A.intBC(inta,intb)
B.voidBC(inta,
charb)
C.floatBC(inta,intb,intc=0)D.voidBC(inta,
intb=0)
34.下面的哪一个保留字不能作为函数的返回类型?
A.voidB.intC.newD.Iong
35.下列关键字中,用以说明类中公有成员的是()。
Afriend;
Bprivate;
Cprotected;
Dpublic
36.进行文件操作时需要包含()文件。
Aiostream.h;
Bstdlib.h;
Cstdio.h;
Dfstream.h
C指向字符串常量的指针;
D指向字符串的指针常量
37.能用作用户自定义标识符。
AfriendB-varC)3xyzDFloat
38.面向对象程序设计将数据与放在一起,做为一个相互依
存、不可分割的整体来处理。
A对数据的操作B信息C数据隐藏D数据抽象
39.一个类的析构函数。
A唯一的B允许重载C至多可有两个D只能是缺
省的
40.下列说法正确的是:
[]。
A一个类的对象能够是另一个类的成员
B一个类能够作为另一个类的派生类
C一个类定义在另一个类的说明中
D以上说法均正确
41.下列各类函数中,不是类的成员函数。
A构造函数B析构函数C友元函数D拷贝构造函
42.有关析构函数的说法不正确的是。
A析构函数有且只有一个B析构函数无任何函数类型
C析构函数和构造函数一样能够有形参D析构函数的作用是
在对象被撤销时收回先前分配的内存空间
43.一般拷贝构造函数的参数是。
A某个对象名B某个对象的成员名
C某个对象的引用名D某个对象的指针名
44.已知:
类A中一个成员函数说明如下:
voidSet(A&
其
中,A&
A.指向类A的指针为a
Ca是类A对象的引用,用来作函数Set()的参数
45.已知:
print()函数是一个类的常成员函数,它无返回值,下
列表示中,()是正确的。
Avoidprint()const;
B.constvoidprint();
C.voidconstprint();
D.voidprint(const);
46.类的析构函数是在__
___调用的。
A.类创立时
创立对象时
C.删除对象时
不自动调用
47.如果类A被说明成类
B的友元,则___
A.类A的成员即类B的成员B.
类B的成员即类
A的成员
C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元
二、填空题
(1)在用class定义一个类时,数据成员和成员函数的默认访问权限是。
(2)含有纯虚函数的类称为。
(3)派生类的主要用途是能够定义其基类中。
(4)当建立,程序自动调用该类的构造函数。
(5)类是用户定义的类型,具有类类型的变量称作。
(6)当一个成员函数被调用时,该成员函数的___指向调用它的对象。
(7)拷贝函数经过使用引用来初始化创立中的对象。
(8)静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是。
(9)对象的三大基本特性是多态性、、封装性。
(10)当一个类对象离开它的作用域时,系统将自动调用该类的
(11)假定AB为一个类,则执行"
ABa[10];
"
语句时,系统自动调用该类构造函数的次数为.
(12)指向基类的对象的指针变量也能够指向的对象。
(13)面向对象程序中,实体的状态由表示,其行为由表示。
(14)定义函数时,应在参数个数或参数类型上有所不
同。
(15)类是用户定义的类型,具有称作对象。
(16)使用指向对象的指针来标识类的成员,则必须使用的运算符是_。
(17)拷贝初始化构造函数使用来初始化创立中的对象。
(18)封装要求一个对象应具备明确的功能,并具有
以便和其它对象相互作用。
(25)在删除一个动态对象时,将自动调用该动态对象所属类的函数。
三、判断题
(1)在定义一个类时,不能在类说明中对数据成员使用表示式进行初始化。
()
(2)如果在类声明中没有定义复制构造函数,就不能用一个对象去初始化另一个对象()
(3)类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。
(对)
(4)在面向对象的程序设计中,凡操作属于同一种对象的,就将这些操作放进该对象类中,形成该类的成员函数。
()
(5)说明函数原型时不需要指明每个函数参数的名字,只需要说
明每个参数的类型和返回值类型就能够了。
(6)所有的表示式都有值。
(7)程序的编译是以文件为单位的,因此将程序分到多个文件中能够减少每次对程序修改所带来的编译工作量。
(8)类的静态数据成员需要在定义每个类的对象时进行初始化。
四、程序填空
(1)在下面程序的横线处填上适当的语句,使该程序执行结果为
10.
#include”iostream.h”
classMyClass
{public:
MyClass(inta){x=a;
//取x值
private:
intx;
};
intmain()
{MyClassmy(10);
cout«
my.getnum()<
<
endl;
return0;
(2)在下面程序的底画线处填上适当的字句
为60。
#include
classbase{intX;
public:
voidint(intinitX){X=initX;
}
intGetnum(){returnX+7;
voidmain()
{
coutv}
(3)
使该程序执行结果
完成类中成员函数
在下面程序的底画线处填上适当的字句
的定义。
#include
classbox{private
intcolor;
intupx,upy;
intlowx,lowy;
x2,int
friendintsame_color(linea,boxb);
voiddefine_box(intx1,inty1,int
y2){upx=x1;
upy=y1;
};
classline{private:
intstartx,starty;
intlen;
friend_intsame_color(linea,boxb);
voiddefine_line(intx,inty){startx=x;
}};
intsame_color(linea,boxb){if(a.color==b.color)return1;
(4)在下面程序的底画线处填上适当的字句,完成程序
classA{
(inti){cout<
voidg(){cout<
”g\n”;
clossB:
A{
voidh(){cout<
”h\n”;
voidmain()
{Bd1;
d1.f(6);
d1.h();
(5)在下列程序的空格处填上适当的字句,使输出为:
0,8,5
#include
classMagic{
doublex;
Magic(doubled=0.00):
x(fabs(d)){}
Magic{returnMagic(sqrt(x*x+c.x*c.x));
<
(ostream&
os,Magicc){returnos<
voidmain()
{Magicma;
cout<
(6)在下面程序的底画线处填上适当的字句为10。
#include<
iostream.h>
classbase{intX;
public:
//为X置值
取X值
{basetest;
test.init(3);
cout<
test.Getnum();
(7)在下列程序的底画线处填上适当的字句的定义。
classbox{private:
public:
friendintsame-color(linea,boxb);
set-color(intc){color=c;
voiddefine-box(intx1,inty1,int
classline{private:
friend-intsame-color(linea,boxb);
voiddefine-line(intx,inty){startx=x;
intsame-color(linea,boxb)
{if(a.color==b.color)
return1;
(8)在下面程序的底画线处填上适当的字句,完成程序
voidf(inti){cout<
i<
endl;
\n”;
class{
A:
:
f;
{Bd1;
d1.f(6);
.h();
使输出为:
0,7,5
(9)在下列程序的空格处填上适当的字句
math.h>
doublex;
(doubled=0.00):
Magic(sqrt(x*x+c.x*c.x));
friendostream&
operator<
os,Magicc){returnos«
c.x;
{
ma<
'
Magic(-7)<
'
ma+Magic(3)+Magic(4);
(10)在下面程序横线处填上适当字句,以使该程序执行结果为
54321
05.54.43.32.21.1
#include<
template<
classT>
voidf(){
5
for(inti=0;
i<
n/2;
i++)
t=a[i],a[i]=a[n-1-i],a[n-1-i]=t;
voidmain(){
inta[5]={1,2,3,4,5};
doubled[6]={1.1,2.2,3.3,4.4,5.5};
f(a,5);
f(d,6);
5;
i++)
cout<
a[i]vv〃〃;
for(i=0;
6;
d[i]<
〃〃;
endl;
五、程序阅读题
1.分析以下程序执行的结果#include<
#include<
stdlib.h>
classSample
intx,y;
Sample(){x=y=0;
Sample(inta,intb){x=a;
y=b;
voiddisp()
x="
x<
y="
y<
Samples1(2,3);
s1.disp();
2.分析以下程序的执行结果
#include<
classSample
~Sample()
if(x==y)
x=y"
else
x!
=y"
3.分析以下程序的输出结果
Sample(inta)
x=a;
constructingobject:
voidfunc(intn)
staticSampleobj(n);
func
(1);
func(10);
4分析以下程序的执行结果
{cout<
Samples(2,3),*p=&
s;
p->
disp();
5分析以下程序的执行结果
inty;
intSample:
*pc;
Samples;
pc=&
Sample:
x;
s.*pc=10;
y;
s.*pc=20;
s.disp();
6分析以下程序的执行结果
}voiddisp()