类和对象、构造函数和析构函数单元测验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类和对象、构造函数和析构函数

单元测验

(满分80分)

学号:姓名:成绩:

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

1.下列叙述中,不正确的是:

A.一个类可以不定义构造函数

B.一个类可以不定义析构函数

C.类的析构函数可以重载

D.类的构造函数可以重载

2.执行以下程序后,输出结果依次是:

class test

{ int x;

public:

test(int a ){x=a;cout<

~test(){cout<

};

void main()

{ test x(1);x=5;}

A.1 构造函数 1 构造函数 5 析构函数 5析构函数

B.1 构造函数 5 构造函数 5析构函数 5析构函数

C.1 构造函数 5 析构函数 5 构造函数 5析构函数

D.1 构造函数 1 析构函数 5 构造函数 5析构函数

3.关于构造函数,以下正确的说法是

A.定义类的成员时,必须定义构造函数,因为创建对象时,系统必定要调用构造函数 B.构造函数没有返回值,因为系统隐含指定它的返回值类型为void

C.无参构造函数和参数为缺省值的构造函数符合重载规则,因此这个类中可以含有这两种构造函数

D.对象一经说明,首先调用构造函数,如果类中没有定义构造函数,系统会自动产生一个不做任何操作的缺省构造函数

4.关于析构函数,以下说法正确的是()

A.析构函数与构造函数的唯一区别是函数名前加波浪线~,因此,析构函数也可以重载B.当对象调用了构造函数之后,立即调用析构函数

C.定义类时可以不说明析构函数,此时系统会自动产生一个缺省的析构函数

D.类中定义了构造函数,就必须定义析构函数,否则程序不完整,系统无法撤消对象5.对于一个C++的类()

A.只能有一个构造函数和一个析构函数

B.可有一个构造函数和多个析构函数

C.可有多个构造函数和一个析构函数

D.可有多个构造函数和多个析构函数

6.下列关于对象的描述不正确的是( )。

A.对象只能描述有形的东西

B.对象具有属性和服务两个主要因素

C.现实世界中的一切事物都可以看作对象,但只有在具体的系统中加以论述才有实际的意义

D.对象的属性是对象的静态特征,服务是动态特征,并且对象的属性只能由本对象的服务来操作

7.关于类的继承不正确的是( )。

A.引入类的继承目的就是为了代码重用,提高编程效率

B.子女有父母的特征是类的继承

C.子继父产业是类的继承

D.子类可以全部继承父类的属性和服务,也可部分继承父类的属性和服务

8.构造函数的功能是()。

A.为类名分配存储空间B.为类的实例分配存储空间

C.建立对象并初始化数据成员D.建立对象并初始化成员函数

9.在下列函数中,()不能重载。

A.成员函数B.非成员函数

C.析构函数D.构造函数

10. 类中定义的各个成员需要设置被访问的权限,以下给出的关键字中,( )不

能用于限定成员的访问权限。

A.extern B.private C.protected D.public

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

1.构成对象的两个主要因素是(1)和(2) ,其中(3)属于动态属性, 属于静态属性, (4)只能由(5)来操作。

2.类是(6)的集合,分类的依据是(7)。

3.程序的三种基本的控制结构是; (8)、(9)、 (10) 。

4.算法具有 (11) 、 (12) 、 (13) 、 (14) 的性质,所以在编程时要保

证这些性质的实现。

5.这是一个从键盘输入三个数,找出最大数的程序。请在空白处填写所缺内容。

void main()

{ int a,b,c,x;

cin>>a;

cout<<”a=”<

cin>>b;

cout<<”b=”<

cin>>c;

cout<<”c=”<

if (15)

cout<<”the three numbers are equal,they are;<

else

{ if(a>b)

x=a;

else

if (16)

x=b;

else

cout<<”me greatest number is;”<

}

)

三、阅读程序题(每空2分,共30分)

1、根据程序回答问题:

#include

class A

{ int x,y;

public:

A(int a,int b){x=a;y=b;cout<<”ABC”<<’\t’;}

A(){x=3;y=4;cout<<”CBA”<<’\n’;}

void Show()

{ cout<<”x=”<

~A(){ cout<<”XYZ”<<’\n’;}

};

void main(void)

{

A *s1=new A(1,2),*s2=new A;s2->Show();

delete s1;delete s2;

}

问题一:本程序的执行后输出结果是: (1)

问题二:如果将语句s2->Show()改为s1->Show(),执行结果是: (2)

2、根据程序回答问题:

#include

class A{

public:

A(int a) {x=a;cout<<”x=”<

private:

int x;

};

class B

{ A y,z; int s;

public:

B(int a,int b,int c);y(a+b+c),z(3-a)

{ s=c-b;cout<<”s=”<

相关文档
最新文档