面对象设计复习题Word格式.docx
《面对象设计复习题Word格式.docx》由会员分享,可在线阅读,更多相关《面对象设计复习题Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
![面对象设计复习题Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/9/81b16655-a98c-45fa-92fe-8858985f7537/81b16655-a98c-45fa-92fe-8858985f75371.gif)
7.已知:
intm=10;
在下列表示引用的方法中,哪个是正确的?
a.int&
x=m;
b.int&
y=10;
c.int&
z;
d.float&
t=&
m;
8.以下有关类与结构体的叙述不正确的是:
a.结构体中只包括数据;
类中封装了数据和操作
b.结构体的成员对外界通常是开放的;
类的成员可以被隐蔽
c.用struct可以声明一个类型名;
而class可以声明一个类名
d.结构体成员默认为private;
类成员默认为public
9.下列哪个不是构造函数的特征?
a.构造函数的函数名与类名相同b.构造函数可以重载
c.构造函数可以设置缺省参数d.构造函数必须指定返回值类型
10.已知:
类A中一个成员函数说明如下:
voidSet(A&
a);
其中,A&
的含义是什么?
a.指向类A的指针为ab.将a的地址值赋给变量Set
c.a是类A对象的引用,用来作函数Set()的参数
d.变量A与a按位与作为函数Set()的参数
11.在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用下列哪个函数?
a.联函数b.重载函数c.递归调用d.嵌套调用
12.已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,哪个是正确的?
a.voidprint()const;
b.constvoidprint();
c.voidconstprint();
d.voidprint(const);
13.以下能对对象进行初始化的是:
a.构造函数b.析构函数c.友元函数d.静态成员函数
14.关于虚函数的描述中,哪个是正确的?
a.虚函数是一个static类型的成员函数b.虚函数是一个非成员函数
c.基类中说明了虚函数后,派生类中其对应的函数可不必说明为虚函数
d.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
15.设有以下类的定义:
classTemp{
intx;
public:
voidsetx(intt=0);
};
若在类外定义成员函数setx(),以下定义形式中正确的是哪个?
a.voidsetx(intt){…}b.voidTemp:
:
setx(intt){…}
c.Tempvoid:
setx(intt){…}d.voidTemp:
setx(intt=0){…}
16.以下关于函数重载的要求,哪个叙述不正确?
a.函数名相同b.函数参数个数不同c.函数返回值类型不同
d.函数参数个数相同但参数类型至少有一个不同
17.已知:
classA{
private:
inta,b;
floatc;
voidfunc1(int,int);
friendintgetData();
则类A分别有几个数据成员和成员函数?
a.2,2b.3,2c.2,1d.3,1
18.已知:
inta,*pa;
char*p=”Ilikecomputer!
”;
关于运算符new和delete的使用,下列表达式哪个是正确的?
a.a=newint;
b.deletep[12];
c.pa=newint(10);
d.p=newint[12];
19.对于类A而言,已知函数A:
A(constA&
a);
则该函数是类A的什么函数?
a.联函数b.友元函数c.拷贝构造函数d.类型转换函数
20.下面类的定义中哪个地方是不正确的?
classexample{
floatx;
example();
(a)
example(int,float);
(b)
operatorint();
(c)
~example();
constinty=23;
(d)
二、填空题:
1.在C++中,函数的参数有两种传递方式,它们是值传递和(引用传递)。
2.当一个成员函数被调用时,该成员函数的(this指针)指向调用它的对象。
3.在C++类中,const关键字可以修饰对象和成员函数,const对象不能(调用非const的普通成员
函数),const成员函数不能(修改)。
4.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为(抽象类),定义该
类至少具有一个(纯虚函数)。
5.描述命题"
A小于B或小于C"
的表达式为(a<
b||a<
c)。
6.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。
对两个有相同名字的数据成员进行访问时,如果没有(类名和作用域分辨符),对此数据成员的访问将出现歧义。
7.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共用)。
8.面向对象的程序设计有四大特征,它们是抽象、封装、(继承)、(重载)。
9.在C++中,构造派生类对象时,总是先从(基类)的初始化开始的。
10.类是用户定义的类型,具有类类型的变量称作(对象)。
11.静态的成员函数没有隐含的(this指针),所以,它们只能访问静态的数据成员。
12.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,
而析构函数名是在类名前加一个~、(无参数)、(不能重载)。
13.在公有派生的情况下,基类数据成员在派生类中的访问权限(不变)。
三、看程序写结果:
1.#include<
iostream.h>
classExample{
inta,b;
Example()
{a=b=0;
cout<
<
"
Thisisanexample!
endl;
}
Example(intx,inty){a=x;
b=y;
~Example()
{
if(a>
b)cout<
a>
b"
elsecout<
a<
=b"
voiddisp()
{cout<
a="
b="
b<
}
voidmain()
Examplee1,e2(6,3);
e1.disp();
e2.disp();
结果
Thisisaexample!
a=0,b=0
a=6,b=3
b
=b
2.#include<
classSample{
Sample(){};
Sample(inta){x=a;
Sample(constSample&
a){x=a.x+++10;
voidprint(){cout<
x="
x<
voidmain(){
Samples1
(2),s2(s1);
s1.print();
s2.print();
X=3
X=12
3.#include<
intx1;
A(intp1){x1=p1;
cout<
InA:
;
x1="
x1<
}~A(){cout<
destructingclassA!
classB{
intx2;
B(intp2)
{x2=p2;
InB:
x2="
x2<
~B(){cout<
destructingclassB!
classC{
intx3;
C(intp3):
x3(p3)
{cout<
InC:
x3="
x3<
~C(){cout<
destructingclassC!
{Aa
(1);
Bb
(2);
Cc(4);
结果:
x1=1
x2=2
x3=4
destructingclassB!
destructingclassA!
4.#include<
classp_example{
intnum;
voidset_num(intval){num=val;
voidshow_num(){cout<
num<
}};
{p_exampleob,obj[2];
p_example*p;
ob.set_num
(1);
obj[0].set_num(10);
obj[1].set_num(20);
p=&
ob;
p->
show_num();
p=obj;
p++;
p--;
1
10
20
5.#include<
int&
f(int&
i)
{i+=10;
returni;
}voidmain()
{intk=0;
m=f(k);
k<
m=20;
6.#include<
inta;
intc;
A(inti){a=i;
c=0;
}intfun(intb){returna*c+b;
{intA:
*pc=&
A:
int(A:
*pfun)(int)=&
fun;
Aob
(1);
ob.*pc=3;
ob.c<
en