




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+期末复习题,BCBAB BCADA ACACC CABBB DBCAA CACC CCDDDCAA,一、选择题,1关于构造函数的叙述正确的是( )。 A构造函数可以有返回值 B构造函数的名字必须与类名完全相同 C构造函数必须带有参数 D构造函数必须定义,不能默认2关于析构函数特征描述正确的是( )。 A一个类中可以有多个析构函数 B析构函数名与类名完全相同 C析构函数不能指定返回类型 D析构函数可以有一个或多个参数3构造函数是在( )时被执行的。 A程序编译 B创建对象 C创建类 D程序装入内存4定义A是一个类,那么执行语句“A a, b(3),*p;”调用了( )次构造函数。 A2 B3 C4 D55在下列函数原型中,可以作为类Base析构函数的是( )。 AvoidBase BBase( ) CBase( )const DBase( ),6this指针是C+实现( )的一种机制。 A抽象 B封装 C继承 D重载7已知类中的一个成员函数说明为:void Set (X &a)其中,X &a的含义是( )。 A指向类X的指针为a B将a 的地址赋给变量 Ca是类X的对象引用,用来作为Set( )的形参 D变量X与a按位与作为函数Set( )的形参8下面关于友元函数的描述中,正确的说法是( )。 A友元函数是独立于当前类的外部函数 B一个友元函数不能同时定义为两个类的友元函数 C友元函数必须在类的外部定义 D在外部定义友元函数时,必须加关键字friend9一个类的友元函数能够访问该类的( )。 A私有成员 B保护成员 C公有成员 D所有成员10友元的作用之一是( )。 A提高程序的运行效率 B加强类的封装性 C实现数据的隐藏性 D增强成员函数的种类,11函数重载的意义主要在于( )。 A使用方便,提高可读性 B提高执行效率 C减少存储空间开销 D提高程序可靠性12下面关于重载函数的说法中正确的是( )。 A重载函数一定具有不同的返回值类型 B重载函数形参个数一定不同 C重载函数一定有不同的形参列表 D重载函数名可以不同13一个函数功能不太复杂,但要求被频繁调用,选用( )。 A内联函数 B重载函数 C递归函数 D嵌套函数14将函数声明为内联函数的关键字是( )。 ARegister Bstatic Cinline Dextern15在内联函数内允许使用的是( )。 A循环语句 B开关语句 C赋值语句 D以上都允许,16在C+中,下列关于参数默认值的描述中正确的是( )。 A设置参数默认值时,应当全部设置 B设置参数默认值后,调用函数不能再对参数赋值 C设置参数默认值时,应当从右向左设置 D只能在函数定义时设置参数默认值17下列关于静态数据成员的叙述,错误的是( )。 A静态数据成员在对象调用析构函数后,从内存中撤销 B即使没有实例化类,静态数据成员也可以通过类名进行访问 C类的静态数据成员是该类所有对象所共享 D类的静态数据成员需要初始化18下列关于静态成员的叙述中,错误的是( )。 A类的外部可以直接调用类的静态数据成员和静态成员函数 B与一般成员一样,只有通过对象才能访问类的静态成员 C类的静态数据成员不能在构造函数中初始化 D类的一般成员函数可以调用类的静态成员19声明类的成员为静态成员,必须在其前面加上关键字( )。 Aconst Bstatic Cpublic Dvirtual 20静态成员为该类的所有( )共享。 A成员 B对象Cthis指针 D友元,21重载赋值操作符时,应声明为( )。 A静态成员函数 B友元函数 C普通函数 D成员函数22为了满足运算符+的可交换性,必须将其重载为( )。 A静态成员函数 B友元函数 C普通函数 D成员函数23下列运算符中,( )运算符不能使用友元函数重载。 A B+ C= D+24在类的继承与派生过程中,关于派生类不正确的说法是( )。 A派生类可以继承基类的所有特性 B派生类只能继承基类的部分特性 C派生类可以重新定义已有的成员 D派生类可以改变现有成员的属性25派生类对象对它的基类成员,( )是可以访问的。 A公有继承的公有成员 B公有继承的私有成员 C公有继承的保护成员 D私有继承的共有成员,26下列叙述中不正确的是( )。 A含纯虚函数的类称为抽象类 B不能直接由抽象类建立对象 C抽象类不能作为派生类的基类 D纯虚函数没有其函数的实现部分27当定义派生类的对象时,调用构造函数的正确顺序是( )。 A先调用基类的构造函数,再调用派生类的构造函数 B先调用派生类的构造函数,再调用基类的构造函数 C调用基类的构造函数和派生类的构造函数的顺序无法确定 D调用基类的构造函数和派生类的构造函数是同时进行的28关于多重继承二义性的描述中,()是错误的。 A一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性 B解决二义性最常用的方法是对成员名的限定 C基类和派生类中出现同名函数,也存在二义性 D一个派生类是从两个基类派生而来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性29下列关于虚函数的说法,正确的是( )。 A虚函数是一个static类型的成员函数 B虚函数是一个非成员函数 C基类中采用virtual声明一个虚函数后,派生类中定义相同原型的函数时可以不加virtual声明 D派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型,30关于虚函数和抽象类描述中,( )是错误的。 A纯虚函数是一种特殊的函数,它没有具体实现 B抽象类是指具有纯虚函数的类 C一个基类中声明有纯虚函数,则它的派生类一定不再是抽象类 D抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出,31下列程序,编译时出现错误的是( )。 class A /1 public: /2 A() Fun(); /3 virtual void Fun()=0; /4; A. 1 B. 2 C. 3 D. 4,32一个( )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 A函数模板B模板函数C类模板D模板类33如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都须重复使用关键字( )。 Aconst Bstatic Cvoid Dclass34假设类模板Employee存在一个static数据成员salary,由该类模板实例化3个模板类,那么存在( )个static数据成员的副本。 A0 B1 C2 D335.C+中,数据文件类型分为( )。 A文本文件和顺序文件B顺序文件和随机文件 C文本文件和二进制文件D数据文件和文本文件36( )是标准输入流。 Acin BcoutCcerrDclog37关于提取和插入运算符,下列说法不正确的是( )。 A可以重载为类的成员函数 B应该重载为类的友元函数 C提取运算符是从输入字符序列中提取数据 D插入运算符是把输出数据插入到输出字符序列中,二、 填空题,1在C+中,函数的参数有三种传递方式,它们是值传递、 和 。2当一个成员函数被调用时,该成员函数的 指向调用它的对象。3在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 ,对此数据成员的访问将出现歧义。4拷贝构造函数使用 作为参数初始化创建中的对象。5在公有继承的情况下,基类数据成员在派生类中的访问权限 。,地址或指针传递 引用传递,this指针,作用域分隔符限定时,引用,保持不变,6 描述命题“A小于B或小于C”的表达式为 。7用new申请某一个类的动态对象数组时,在该类中必须能够匹配到 构造函数,否则应用程序会产生一个编译错误。8静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 。9为了避免可能出现的歧义,C+对ifelse语句配对规则规定为:else总是与 配对。10设“int a=3,b=4,c=5;”,表达式“(a+b)c&b=c”的值是 。,AB|AC,没有形参的或缺省参数,共享,与最近的if,0,11面向对象的程序设计有三大特征,它们是 。12在Visual C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型 ;在基类和派生类中,成员函数的覆盖是指 。13构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、 。14动态联编要满足两个条件,它们是 。15在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 ,定义该类至少具有一个 。,封装、 继承 、 多态,不同,派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同,析构函数没有参数 、 析构函数可以定义为虚函数,被调用的成员函数是虚函数 、 用指针或引用调用虚函数,抽象类,纯虚函数,16在C+类中,const关键字可以修饰对象和成员函数,const对象不能 ,const成员函数不能 。17举出C+中两种用户自定义的数据类型: 。18C+中没有字符串类型,字符串是通过 来表示的,每一个字符串都有一个结尾字符 。19C+中没有输入输出语句,输入输出是通过 实现的, 写出一条打印整型变量n的输出语句: ;20举出C+中两种代码复用的方式: 。,被修改,修改类数据成员,类 、 枚举,字符数组,0,输入输出库,coutn,继承 、 复用,21 下面程序的运行结果是。#include void main( ) int i=1;while (i=15)i+;if (i%3!=2) continue; else cout i=iendl;,2 5 8 11 14,22 下面程序的运行结果是_。#include class test private:int num; float fl; public:test( ); int getint( )return num; float getfloat( )return fl; test( ); ;,test:test( ) cout Initalizing default endl; num=0;fl=0.0; test:test( )cout Desdtructor is active endl; void main( ) test array2; cout array1.getint( ) array1.getfloat( ) endl; ,Initalizing defaultInitalizing default0 0Desdtructor is activeDesdtructor is active,23 下面程序的运行结果是_。#include class Apublic:A()coutA:A() called.n;virtual A()coutA:A() called.n;class B:public Apublic:B(int i)coutB:B() called.n;buf=new chari;virtual B()delete buf;coutB:B() called.n;private:char *buf;,void fun(A *a)delete a;void main()A *a=new B(15);fun(a);,A:A() called.B:B() called.B:B() called.A:A() called.,三 问答题,1 若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?,解答要点:当对象含有指针数据成员,并用它初始化同类型的另一个对象时,缺省的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出现同一内存单元释放两次,导致程序运行出错。,2 简述成员函数、全局函数和友元函数的差别。,解答要点:以下几点必须说清楚:成员函数是在类内部定义的,作用域在类的内部,成员函数可以访问类的数据成员(公有、保护和私有数据成员),可以调用该类的其它成员函数(公有、保护和私有成员函数),可以调用全局函数。如果友元函数是另一个类的公有成员函数,则该类的成员函数也只能通过那个类的对象调用,不能调用那个类的保护和私有成员函数。非本类成员函数(其它类成员函数或全局函数)可以通过该类的对象访问该类的公有数据成员和调用该类的的公有成员函数。不是在类中定义的成员函数都是全局函数。如果某一个函数(全局函数或类的成员函数)定义为另一个类的友元函数,需要在那个类中用friend关键字声明,友元函数并不是类的成员,它的定义自然是在那个类的外面。,3 简述结构化的程序设计、面向对象的程序设计的基本思想。解答要点:结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。4 结构struct和类class有什么异同?解答要点:struct和class都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。在C+中,struct可被class代替。,四、找出下面程序(或程序段)中的语法错误,(1)程序功能是倒序输出各给定的字符串。#include void main()char str5 =First,Second,Third,Forth,Fifth;char *cp =str4,str3,str2,str1,str0;int i; while(i=5)printf(%c ,*(cp+i);i+;, char str5 =First,Second,Third,Forth,Fifth;应为char str510 =First,Second,Third,Forth,Fifth; while(i=5)应为while(i5) printf(%c ,*(cp+i);应为printf(%s,*(cp+i); int i;应为int i=0;,(2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国农业银行升级改造项目借款合同
- 环保设备制造原材料环保筛选方案
- 城乡供水价格动态调整方案
- 供水系统安全运行管理方案
- 河流水环境治理效果评估方案
- 森林防火巡回道地质灾害防治处理方案
- 校园餐冷链物流保障技术方案
- 供热老旧管网改造智能化升级技术方案
- 煤矿地质勘探数智赋能的策略及实施路径
- 人工智能赋能高等数学课程教学创新
- 《一年级开学第一课》课件
- 2025秋人教版(2024)八年级上册英语一学期教学计划
- 会展推广的合同范本
- 武消院火灾调查B讲义01电气火灾调查
- 起搏器植入患者全程护理要点
- (2025年标准)会议代办协议书
- 工贸企业企业安全检查表
- 2025年理赔专业技术职务任职资格考试(理赔员·车险理赔)历年参考题库含答案详解(5套)
- 广东省东莞市2024-2025学年八年级下学期7月期末考试英语试卷(含答案)
- 医院设备采购培训课件
- 2025年科创板开通考试试题及答案
评论
0/150
提交评论