东南大学C++测试题(类和对象、构造函数和析构函数单元测验).doc_第1页
东南大学C++测试题(类和对象、构造函数和析构函数单元测验).doc_第2页
东南大学C++测试题(类和对象、构造函数和析构函数单元测验).doc_第3页
东南大学C++测试题(类和对象、构造函数和析构函数单元测验).doc_第4页
东南大学C++测试题(类和对象、构造函数和析构函数单元测验).doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

类和对象单元测验类和对象、构造函数和析构函数单元测验(满分80分)学号: 姓名: 成绩: 一、选择题(每小题1分,共10分)1下列叙述中,不正确的是: A. 一个类可以不定义构造函数B. 一个类可以不定义析构函数C. 类的析构函数可以重载D. 类的构造函数可以重载2执行以下程序后,输出结果依次是: class test int x;public: test(int a )x=a;coutx”构造函数”; test()coutx”析构函数”;void main() test x(1);x=5;A1 构造函数 1 构造函数 5 析构函数 5析构函数B1 构造函数 5 构造函数 5析构函数 5析构函数C1 构造函数 5 析构函数 5 构造函数 5析构函数D1 构造函数 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. 类中定义的各个成员需要设置被访问的权限,以下给出的关键字中,( )不能用于限定成员的访问权限。Aextern Bprivate Cprotected Dpublic二、填空题(每空1分,共16分) 1构成对象的两个主要因素是 (1) 和 (2) ,其中 (3) 属于动态属性, 属于静态属性, (4) 只能由 (5) 来操作。 2类是 (6) 的集合,分类的依据是 (7) 。 3类的成员的访问属性有三种,分别是; (8) 、 (9) 、 (10) 。 4类具有 (11) 、 (12) 、 (13) 的性质,所以所编出的程序安全性好,重用性好。 (14) 是类的实例。 5如果在定义类时没有定义构造函数,则编译系统会 (15) 。如果用一个已经定义的对象去初始化另一个对象,则系统会调用 (16) 。三、阅读程序题(每空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=”xt”y=”yt; A() cout”XYZ”Show(); delete s1;delete s2;问题一:本程序的执行后输出结果是: (1) 问题二:如果将语句s2-Show()改为s1-Show(),执行结果是: (2) 2、根据程序回答问题: #include class A public: A(int a) x=a;cout”x=”xt”class_A”n; A()cout”class_A”n;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=”st”class_B”n; B()cout”class_B”n;void main(void) B s(1,2,3);问题一:本程序共输出 (3) 行,其中第三、第四行分别是 (4) 问题二:本程序中,y,z是 (5) 的对象成员,它们是 (6) 的对象,它们的访问权属于 (7) 3、阅读程序,回答问题#includeclass node int x,y;public: node(int a,int b) x=a;y=b;cout”node_1”n; node() x=a.x;y=a.y;cout”node_2”n; void Show() cout”x=”xt”y=”yn;void main(void) node f1(5,6);node f2(f1);f2.Show();问题一:构造函数node()的参数表中缺少一个形参,这个形参的正确定义是: (8) 问题二:node()中的形参被正确定义后,执行结果依次是: (9) 4、阅读程序回答问题: #includeclass A int x;public: void Show() cout”x=”xt A(int a=10) x=a;cout”A”n; A() cout”A”n;void main(void)A f; f.Show();f=20;f.Show();问题一:本程序共输出 (10) 行,依次是: (11) 问题二:与语句f=20等价的语句是 (12) 问题三:语句f=20是系统采用了 (13) 的类型转换问题四:语句f=20的作用是 (14) A. 将常数20赋给对象f,然后调用构造函数B. 先用对象f调用构造函数,然后将20赋给fC. f自动产生一个临时对象,再调用构造函数,将20初始化构造函数D. =左边调用构造函数,并将20转换为临时对象,完成初始化后将临时对象赋给f问题五:程序执行结果是: (15) 四、完善程序(每空2分,共24分)1Rect是一个矩形类,main()函数中定义了3个对象,分别用到了两个构造函数,其中的缺省构造函数将数据成员全部初始化为0。main()中又执行了两矩形相加操作和输出操作。请完善程序。class Rectprivate: float x: /左下角X坐标 float y; /左下角Y坐标 float w: /宽 float h: /高public:Rect() (1) Rect( (2) )x=a;y:=b;w=c;h=d; ; Rect operator+(Rect b); void Display();Rect (3) (Rect b)Rect s;sx=x+bx;sy=y+by;s.w=w+bw; sh=h+b.h;return (4) ;void Rect:Display() cout”x=”xt”y=”yt; cout”w=”wt”h=”hendl:void main() Rect A,B(14,2,3,20),c(25,5,3,4.8); A=B+C: ADisplay();2以下程序中定义了一个电话簿类TeleBook,数据成员tbook用于存储一个链表结构的电话簿,结构item定义了链表中的一个数据项。数据成员number表示电话簿中已存入的数据元素个数。程序运行时用户可以通过菜单选择成员函数提供的插入新号码、查找、打印清单和删除一个号码等操作。选择输入时,要求输入姓名和对应的电话号码,新结点插在链首。选择删除时,输入一个姓名,先在表中查找该项,若找到则进行删除操作,否则给出提示信息。此链表不带附加的头结点。选择打印清单,则屏幕打印输出电话簿中存储的姓名和电话号码清单。请填空以完善该程序。#include #includestruct item char name12;/姓名 char telnum8;/电话号码 item *next;class TeleBookprivate: item *tbook;/电话号码 int number; /表中存入的电话号码个数public: TeleBook()tbook=NULL;number=0; void Insert(); void Delete(); void Print();void TeleBook:Insert() /输入新数据项 item *p; p=new item; if(!p)return; coutp-namep-telnurn; P-next= (5) ; (6) ; number+;void TeleBook:Delete() 删除数据项 char ch12; item *p,*q; p=tbook; coutch; while( (7) ) if(strcmp(p-name,ch)=0)break; q=p; P= (8) ; if(p= (9) )cout”Not fred the name!”next; else (10) ; number- coutname”is deleted!”endl; delete p; return;void TeleBook:print() /打印清单 item *p; (11) ; cout”All telenums:”numberendl; while(p) coutname:telnumendl; (12) ; return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论