面向对象程序设计复习试题答案Word下载.docx
《面向对象程序设计复习试题答案Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计复习试题答案Word下载.docx(47页珍藏版)》请在冰豆网上搜索。
C)参数类型不同D)函数返回值类型不同
在C++中执行以下4条语句后输出rad值为:
staticinthot=200;
int&
rad=hot;
hot=hot+100;
cout<
<
rad<
endl;
A)0B)100C)300D)200
系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:
A)参数个数B)参数类型C)函数名称D)函数的返回值类型
对C++语言和C语言的兼容性,描述正确的是:
(A)
A)C++兼容CB)C++部分兼容CC)C++不兼容CD)C兼容C++
在C++中使用流进行输入输出,其中用于屏幕输出的对象是:
A)cerrB)cinC)coutD)cfile
对使用关键字new所开辟的动态存储空间,释放时必须使用(C)
A)freeB)createC)deleteD)realse
在函数调用时,如某一默认参数要指明一个特定值,则有(A)
A)其之前所有参数都必须赋值B)其之后所有参数都必须赋值
C)其前、后所有参数都必须赋值D)其前、后所有参数都不必赋值
下列哪个类型函数不适合声明为内联函数(A)
A)函数体语句较多B)函数体语句较少
C)函数执行时间较短D)函数执行时间过长
intFunc(int,int);
不可与下列哪个函数构成重载(B)
A)intFunc(int,int,int);
B)doubleFunc(int,int);
C)doubleFunc(double,double);
D)doubleFunc(int,double);
下面的哪个保留字不能作为函数的返回类型(C)
A)voidB)intC)newD)long
一个函数功能不太复杂,但要求被频繁调用,选用(A)。
A.内联函数B.重载函数C.递归函数D.嵌套函数
已知函数f的原型为:
voidf(int&
a,char*b);
变量s,t的定义是:
ints;
chart[]="
ABCD"
;
把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是(C)
Af(&
s,&
t);
Bf(&
s,t);
Cf(s,t);
Df(s,&
若定义cin>
>
str;
当输入
MicrosoftVisualStudio6.0!
所得结果是str=(B)。
A、MicrosoftVisualStudio6.0!
B、Microsoft
C、MicrosoftVisual
D、MicrosoftVisualStudio6.0
.函数模板(C)。
A、代表某一具体函数
B、与模板函数是同一个函数
C、与某一个具体的数据类型连用
D、是模板函数实例化的结果
在C++中,关于下列设置参数默认值的描述中,正确的是(C)
A、不允许设置参数的默认值
B、设置参数默认值只能在定义函数时设置
C、设置参数默认值时,应该是先设置右边的再设置左边的
D、设置参数默认值时,应该全部参数都设置
下列表示引用的方法中,(A)是正确的。
k=1000;
A、int&
x=k;
B、char&
y;
C、int&
z=1000;
D、float&
t=&
k;
有如下模板定义:
template<
classT>
Tfun(Tx,Ty){returnx*x+y*y;
}
在下列对fun的调用中,错误的是:
A)fun(2,8)B)fun(2.0,8.2)C)fun(2.3,8)D)fun(‘2’,’8’)
通常情况下,函数模板中的类型参数个数不能是(A)
A)0个B)1个C)2个D)3个
1.2填空题
1、假定有如下定义:
intx;
若要将整型变量y定义为变量x的引用,则应使用的定义语句是_int&
y=x;
________。
具有相同函数名但具有不同参数表的函数称为重载函数。
'
2、在进行函数调用时,将把参数的值传递给值参数,把参数的_地址_传递给引用参数。
3、执行完下列三条语句后,指针变量c指向__b___。
Inta,b,*c=&
a;
int*&
p=c;
p=&
b;
4、假设有如下函数定义:
voidFun(intx,inty=100);
则语旬Fun(5)语句__Fun(5,100)_等价。
5、在一个C++程序中,每个变量都必须遵循__先定义后使用__的原则。
6、下面是一个求数组元素之和的程序。
主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。
函数TotalSum计算数组元素之和。
请完成下列程序。
#include<
iostream.h>
__int
Totalsum(int
array[],int
len)__;
voidmain()
{
inta[5]={2,3,6,8,10};
__intTotal___;
Total=Totalsum(a,5);
"
Sumofarray:
Total<
endl;
intTotalsum(intarray[],intlen)
____intsum=0____;
for(intI=0;
____I<
len____;
I++)
____sum+=array[I]_____;
returnsum;
}
7、下面的函数Fun未使用中间变量实现了对两个数的交换,请完成下列函数的定义。
VoidFun(int&
x,int&
y)
x+=y;
y=___x-y____;
__x=x-y_____;
8、定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为__常量__,即在该形参声明的前面加上__const__关键字进行修饰。
9、在一个函数的定义或声明前加上关键字__inline__时,该函数就声明为内联函数。
1.3简答题
A、.内联函数的含义
在函数前加上关键字inline说明了一个内联函数,这使一个函数在程序行里进行代码扩展而不被调用。
这样的好处是减少了函数调用的开销,产生较快的执行速度。
但是由于重复编码会产生较长代码,所以内联函数通常都非常小。
如果一个函数在类说明中定义,则将自动转换成内联函数而无需用inline说明。
B、.函数重载的含义
在同一作用域范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函数,编译时编译器能够识别实参的个数和类型来决定该调用哪个具体函数。
需要注意的是,如果两个函数仅仅返回类型不同,则编译时将会出错,因为返回类型不足以提供足够的信息以使编译程序判断该使用哪个函数。
所以函数重载时必须是参数类型或者数量不同。
C、引用与指针的区别
D、内联函数使用上的限制
E、定义带默认参数值函数的规则
F、指针与常量的关系
1.4程序阅读题
1)写出下列程序的运行结果。
intx;
int&
p=x;
x=10;
p=x+10;
cout<
x<
"
p<
结果:
20,20
2)写出下列程序的运行结果。
intf(inta)
return++a;
intg(int&
a)
intm=0,n=0;
m+=f(g(m));
n+=f(f(n));
m="
m<
n="
n<
m=3
n=2
3)写出下列程序的运行结果。
voidFun()
intnum=20;
TheFun'
snumis"
num<
intnum=10;
Themain'
snumis"
Fun();
{
intnum=30;
cout<
TheField'
}
snumis10
snumis20
snumis30
类和对象
2.1选择题
下列的各类函数中,不是类的成员函数。
A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数
作用域运算符“:
:
”的功能是:
(B)
A)标识作用域的级别的B)指出作用域的范围的
C)给定作用域的大小的D)标识成员是属于哪个类的
已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。
A)voidprint()const;
B)constvoidprint();
C)voidconstprint():
D)voidprint(const);
在类定义的外部,可以被访问的成员有(C)
A)所有类成员B)private的类成员
C)public的类成员D)public或private的类成员
关于类和对象不正确的说法是:
A)类是一种类型,它封装了数据和操作B)对象是类的实例
C)一个类的对象只有一个D)一个对象必属于某个类
在C++中实现封装是借助于(B)
A)枚举B)类C)数组D)函数
定义析构函数时,应该注意:
A)其名与类名完全相同B)返回类型是void类型
C)无形参,也不可重载D)函数体中必须有delete语句
类claseCC1的说明如下,错误的语句是:
claseCC1{
inta=2;
//(A)
CC1();
//(B)
public:
CC1(intval);
//(C)
~CC1();
//(D)
};
类的指针成员的初始化是通过函数完成的,这个函数通常是:
A)析构函数B)构造函数C)其它成员函数D)友元函数
关于构造函数的说法,不正确的是:
A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同
C)它在对象被创建时由系统自动调用D)没有返回值
通常拷贝构造函数的参数是:
A)对象名B)对象的成员名C)对象的引用名D)对象的指针名
关于成员