C++模拟试卷(四).doc
《C++模拟试卷(四).doc》由会员分享,可在线阅读,更多相关《C++模拟试卷(四).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+程序设计模拟试卷(四)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1. 当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()A. 都是虚函数B. 只有被重新说明时才是虚函数C. 只有被重新说明为virtual时才是虚函数D. 都不是虚函数答案:A解析:(P170)在基类声明为virtual的函数为虚函数,在派生类中只要有相同的函数(函数名相同、返回值相同、形参类型和个数相同)即使不用virtual说明,也都是虚函数。2. 要禁止修改指针p本身,又要禁止
2、修改p所指向的数据,这样的指针应定义为()A. const char *p=“ABCD”;B. char *const p=“ABCD”;C. char const *p=“ABCD”;D. const char * const p=“ABCD”;答案:D解析:(P12)const char *p说明禁止通过p修改所指向的数据。char * const p则说明不能修改指针p的地址。因此const char * const p=“ABCD”;它禁止修改指针p本身,又禁止修改p所指向的数据。3. 函数调用func(exp1,exp2),(exp3,exp4,exp5)中所含实参的个数为()A.
3、1B. 2C. 4D. 5答案:B解析:(exp1,exp2)、(exp3,exp4,exp5)表示是两个逗号表达式,值是最后一个值,相当于两个参数。因此实参的个数是2。4. 设有函数模板template Q Sum(Q x,Q y)return (x)+(y);则下列语句中对该函数模板错误的使用是()A. Sum(10,2);B. Sum(5.0,6.7);C. Sum(15.2f,16.0f);D. Sum(“AB”,”CD”);答案:D解析:(P40)由Q Sum(Q x,Q y)可知形参和函数返回值都是同一种数据类型。A、B、C三项都正确。而D项用字符串作为实参,字符串的操作与数值类型
4、不同,要用特殊方法进行字符串的连接和运算。5. 类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p-A:func()将()A. 调用类A中的函数func()B. 调用类B中的函数func()C. 根据p所指的对象类型而确定调用类A中或类B中的函数func()D. 既调用类A中函数,也调用类B中的函数答案:A解析:(P117)指向类成员指针的使用,A:func()是明确调用A类的func函数,所以不管p指向基类或者派生类对象,都执行基类虚函数。注意p-A:func()和p-fun();进行区分。如果使用p-fun(),因为p指向派生类对象,由动态多态
5、性可知要调用派生类的虚函数。6. 在面向对象的程序设计中,首先在问题域中识别出若干个 ()A. 函数B. 类C. 文件D. 过程答案:B解析:(P31)面向过程的和面向对象都具有、函数、文件和过程这些概念,而面向对象程序才有类和对象的特征。所以选择B。7. 已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明()A. f1和f2都是静态函数B. f1不是静态函数,f2是静态函数C. f1是静态函数,f2不是静态函数D. f1和f2都不是静态函数答案:C解析:(P107)普通成员函数可以调用静态函数,相反静态函数不能调用普通成员函数,这与普通函数与常成员函数相同。因此选择C项。8
6、. 下列有关模板和继承的叙述正确的是 ()A. 模板和继承都可以派生出一个类系B. 从类系的成员看,模板类系的成员比继承类系的成员较为稳定C. 从动态性能看, 继承类系比模板类系具有更多的动态特性D. 相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系答案:D解析:(P145)类是相同类型事物的抽象,具有不同的操作。而模板是不同类型的事物,具体相同的操作的抽象。类模板的实例化后,各个对象没有任何关系。而类对象是通过派生、继承等关系的关系。9. 有关C+编译指令,以下叙述正确的是()A. C+每行可以写多条编译指令B. #include指令中的文件名可含有路径信息C. C+的编
7、译指令可以以#或/开始D. C+中不管if后的常量表达式是否为真,该部分都需要编译答案:B解析:(P96)编译指令以作为开头,只能一行写一条,if有选择进行编译,所以选择B项。10. 在C+中不返回任何类型的函数应该说明为()A. intB. charC. voidD. double答案:C解析:无形参或无返回值都可以用void来声明,int char double分别是整型、字符型和实型。11. 若Sample类中的一个成员函数说明如下:void set(Sample& a),则Sample& a的含义是()A. 指向类Sample的名为a的指针B. a是类Sample的对象引用,用来作函数
8、Set()的形参C. 将a的地址赋给变量SetD. 变量Sample与a按位与的结果作为函数Set的参数答案:B解析:(P53)成员函数使用对象的引用作为形参。该函数的功能是将已知对象的所有数据成员的值拷贝给相应对象的所有数据成员,不会建立临时对象,这里是对象的引用所以选择B。12. 下列关于静态数据成员的描述中正确的是()A. 静态数据成员是类的所有对象所共有的B. 静态数据成员要在构造函数内初始化C. 类的每个对象有自己的静态数据成员D. 静态数据成员不能通过类的对象调用答案:D解析:(P107)静态成员属于类的即所有对象所共享的,只能在外部进行初始化。使用时可以使用形式有两种,类名:静态
9、成员或者对象.静态成员。所以选择D项。13. 在编译指令中,宏定义使用哪个指令()A. #ifB. #includeC. #defineD. #error答案:C解析:(P7)#if条件编译,include文件包含,error错误处理。14. 类的析构函数是对一个对象进行以下哪种操作时自动调用的是()A. 建立B. 撤销C. 赋值D. 引用答案:B解析:(P80)删除对象或结束程序时,自动调用析构函数。15. 关于new运算符的下列描述中,错误的是()A. 它可以用来动态创建对象和对象数组B. 使用它创建的对象或对象数组可以使用运算符delete删除C. 使用它创建对象时要调用构造函数D. 使
10、用它创建对象数组时必须指定初始值答案:D解析:(P107)静态成员的特性是静态成员只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。静态成员表示整个类范围的信息,其声明以关键字static开始,包括静态数据成员和静态成员函数。在对静态数据成员初始化时应注意:(1)应在类体外对静态数据成员进行初始化(静态数据成员的初始化与它的访问控制权限无关)。(2)静态数据成员初始化时前面不加static关键字,以免与一般静态变量或对象混淆。(3)由于静态数据成员是类的成员,因此在初始化时必须使用作用域运算符(:)限定它所属的
11、类。因此选择D项。16. 如果类A被说明成类B的友元,则()A. 类B不一定是类A的友元B. 类B的成员即类A的成员C. 类A的成员即类B的成员D. 类A的成员函数不得访问类B的成员答案:A解析:(P113)友元关系不能被继承,友元关系是单向的,友元关系不具有传递性。但是友元函数不是类的成员,所以选择A项。17. 假定一个类的构造函数为A(int aa,int bb)a=aa+;b=a*+bb;,则执行A x(4,5);语句后,x.a和x.b的值分别为()A. 4和5B. 4和20C. 4和24D. 20和5答案:C解析:(P75)执行构造函数将数据成员进行赋值,aa+是后加,先赋值a4,+b
12、b,bb变量值先自加为6,再与a相乘,所以b24。18. 下列运算符中,在C+语言中不能重载的是()A. *B. =C. :D. /答案:C解析:(P186)除了类属关系运算符.、成员指针运算符.*、作用域运算符:、sizeof运算符和三目运算符?:以外,C+中的所有运算符都可以重载。19. C+语言建立类族是通过()A. 类的嵌套B. 类的继承C. 虚函数D. 抽象类答案:B解析:(P174)类族即同一个类派生出来的类,各个类是兄弟或父子关系。20. 在C+语言中,数据封装要解决的问题是()A. 数据的规范化B. 便于数据转换C. 避免数据丢失D. 防止不同模块之间数据的非法访问答案:D解析
13、:(P39)封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。类是数据封装的工具,对象是封装的实现。类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。封装体现了面向对象方法的“信息隐蔽和局部化原则”。二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。1. 若要使用string类,需要引入的头文件是_。答案:(P40)string.h解析编译时要将头文件引入才能使用
14、标准库中的方法或成员。2. 在函数前面用_保留字修饰时,则表示该函数表为内联函数。答案:(P59)inline解析内联函数,用来提高程序运行速度。在类内部定义的函数也是内联函数。3. 向量操作方法中_方法返回向量中的第一个对象。答案:(P151)front解析考察向量方法的使用。front():返回向量中的第1个对象。back():返回向量中的最后一个对象。operator(size_type,n):返回向量中的第n1个对象(下标为n的向量元素)。4. C+派生类使用两种基本的面向对象技术:第一种称为性质约束,即对基类的性质加以限制;第二种称为_,即增加派生类的性质。答案:(P129)性质扩展
15、解析派生类通过继承可以从基类中获得成员,也可以自定义成员。5. 重载的运算符保持其原有的_、优先级和结合性不变。答案:(P183)操作数解析运算符重载时要遵循以下规则:(1)除了类属关系运算符“.”、成员指针运算符“.*”、作用域运算符“:”、sizeof运算符和三目运算符“?:”以外,C+中的所有运算符都可以重载。(2)重载运算符限制在C+语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。(3)重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。6. 编译时的多态性通过_函数实现。答案:(P165)重载解析编译多态性,实现的方法主要通过函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 模拟 试卷
限制150内