(完整版)C++考试题库及答案,推荐文档_第1页
(完整版)C++考试题库及答案,推荐文档_第2页
(完整版)C++考试题库及答案,推荐文档_第3页
(完整版)C++考试题库及答案,推荐文档_第4页
(完整版)C++考试题库及答案,推荐文档_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、判断 char 型变量 cl 是否为小写字母的正确表达式是。(2.0 分)A、(cl>='a')&&(cl<='z')B、('a'>=cl)|('z'<=cl)C、a'<=cl<='z'D、(cl>=a)&&(cl<=z)假定MyClass为一个类,则执行"MyClass a(2),b5,*c4"后,执行构造函数的次数为 ( 2.0 分)A、6B、11C、10D、5char *s1="hello&q

2、uot;,*s2;s2=s1; 则 。(2.0 分)A、s1 不能再指向其它单元B、cout<<s1;与 cout<<s2;结果相同C、不能访问"hello"D、s2 指向不确定的内存单元已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是 。(2.0 分)A、*A1.p=5;B、A1.*p=5;C、A1->p=5;D、A1.p=5;C+异常处理机制中没有 。 (2.0分)A、 finallyB、 tryC、throwD、 catch所谓多态性是指。(2.0 分)A、一个对象调用不同名称的对象B、一个对象调

3、用不同名称的函数C、不同的对象调用相同名称的函数D、 不同的对象调用不同名称的函数2.0 分)关于 new 运算符的下列描述中,是错的。(A、使用它创建对象数组时必须指定初始值B、它可以用来动态创建对象和对象数组C、 使用它创建对象时要调用构造函数D、使用它创建的对象和对象数组可以使用运算符delete 删除以下正确的说法是:在C+语言中进行值传递时 。 (2.0分)A、形参是虚拟的,不占用存储单元B、实参和与其对应的形参各占用独立的存储单元C、只有当实参和与其对应的形参同名时才共占用存储单元D、实参和与其对应的形参共占用一个存储单元C+磷体系中,能被派生类继承的是 。 (2.0分)A、友元函

4、数B、析构函数C、构造函数D、虚函数对于重载的运算符>>,它是一个。(2.0 分)A、用于输出的成员函数B、用于输入的友元函数C、用于输入的成员函数D、用于输出的友元函数是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。(2.0分)A、静态成员函数B、纯虚函数C、虚析构函数D、虚构造函数定义重载函数的下列要求中,是错误的。(2.0 分)A、要求函数的返回值不同B、要求参数个数相同时,参数类型不同C、要求参数中至少有一个类型不同D、要求参数的个数不同可以通过友元函数重载的运算符为。(2.0 分)A、>>B、()C、D、 在下列运算符中

5、,不能重载的是。(2.0 分)A、 deleteB、 sizeofC、 !D、 new下列运算符中,运算符在C+语言中不能重载。(2.0分)A、 newB、 C、 +=D、可以通过友元函数重载的运算符为。(2.0 分)A、()B、C、D、>>不能被重载的运算符1、 . (成员访问运算符) 2、.* (成员指针访问运算符) 3、: (域运算符) 4、sizeof(长度运算符)5、?:(条件运算符)下列运算符中,只能作为类成员函数重载的是。(2.0 分)A、B、<<C、 +D、 +类 MyA 的拷贝初始化构造函数是。(2.0分)A、MyA(MyA)B、 MyA(MyA&am

6、p;)C、 MyA(MyA*)D、MyA();用 cin 为整型变量输入数据时,如果从键盘输入的不是数字,输入后整型变量中的结果会是 :( 2.0 分)A、不确定B、0C、正数D、负数在C+诩言中,引用数组元素时,其数组下标的数据类型允许是。(2.0 分)A、任何类型的表达式B、整型表达式C、整型常量或整型表达式D、整型常量关于类模板描述不正确的是。(2.0 分)A、根据它可以定义多个对象B、它的存在不代表一个具体的、实际的类,而是代表一类的类C、它可以使类中的某些数据取任意类型D、根据它可以产生一系列类下列说法不正确的是。(2.0分)A、不同函数中,可以使用相同名字的变量B、在一个函数内部,

7、可以在复合语句中定义变量,这些变量只在复合语句中有效C、形式参数是局部变量D、主函数 main 中定义的变量在整个文件或程序中有效建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为的构造函数。(2.0 分)A、基类、自己所属类、对象成员所属类B、对象成员所属类、基类、自己所属类C、自己所属类、对象成员所属类、基类D、基类、对象成员所属类、自己所属类关于运算符重载,下列表述中正确的是。( 2.0 分)A、可以通过运算符重载来创建C+中原来没有的运算符B、在类型转换函数的定义中不需要声明返回类型C、运算符函数的返回类型不能声明为基本数据类型D、C+已有的任何运算符都可以重载下列关

8、于运算符重载不正确的是。(2.0 分)A、运算符重载不能改变运算符的优先级B、运算符重载能改变对预定义类型数据的操作方式C、运算符重载不能改变运算符的结合性D、运算符重载不能改变运算符的操作数个数在表达式x+y*z 中 ,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是。(2.0 分)A、operator+ 有两个参数,operator* 有一个参数B、operator+ 有两个参数,operator* 有两个参数C、operator+ 有一个参数,operator* 有两个参数D、operator+ 有一个参数,operator* 有一个参数+和 * 都是二元

9、运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参数, 而第一个操作数就是对象本身,仅以 this 指针的形式隐藏在参数表中当作为非成员函数重载时有两个参数。以下叙述中正确的是。(2.0分)A、静态(static)类别变量的生存期贯穿于整个程序的运行期间B、函数的形参都属于全局变量C、未在定义语句中赋初值的auto 变量和 static 变量的初值都是随机值D、全局变量的作用域一定比局部变量的作用域范围大在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是。(2.0 分)A、派生类的对象的地址可以赋给指向基类的指针B、派生类的对象可以初始化基类的引用C、派生类的对象

10、可以直接访问基类中的成员D、派生类的对象可以赋给基类的对象不能作为重载函数的调用的依据是。(2.0 分)A、函数名称B、参数类型C、 参数个数D、 函数类型若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是。(2.0 分)A、函数调用可以作为一个函数的形参B、函数调用可以出现在表达式中C、函数调用可以作为独立的语句存在D、函数调用可以作为一个函数的实参在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式: 函数调用作为一条语句。例如: fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项 A)正确。 函数出现在表

11、达式中,这种 表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数max是表达式的一部分,将其值乘以5后赋给 c故选项C)正确。函数调用作为一个函数的实参,例如: m=max(a,max(b,c);其中max(b,c)是一次函数调用, 它的值作为max另一次调用的实参。故选项B)正确。函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项A)错误。如果a=1,b=2,c=3,d=4,执行表达式 a>b?a:c<d?c:d后的结果是 。 ( 2.0分)A、4B、 3C、D、

12、1若 i 为整型变量,则以下循环执行次数是。for(i=2;i=0;) cout<<i -;( 2.0 分)A、2次B、无限次C、1次D、0次2.0 分)设 "char *s;", 以下正确的表达式是A、*s='s'B、*s="software"C、 s="software"D、*s="software"下 列 程 序 段 的 输 出 结 果 为 。 #include void main() char s="123",*p; p=s;cout<<*p+&l

13、t;<endl; ( 2.0 分)A、1B、 123C、3D、321如果有如下语句char str20; cin >> str; cout << str; 执行时输入的是“ this is a test line! ” ,则输出的内容是。(2.0 分)A、 thisB、this is a test line!C、this is a test lineD、this is a testcin流遇空白符号结束,因而只会读入第一个单词this,输出this关于析构函数的特征,正确的是。(2.0 分)A、析构函数和构造函数都可重载B、析构函数必须将指针类型的数据成员的值置未

14、NULLC、析构函数不能有参数D、析构函数的返回值必须为void析构函数没有数据类型,也没有参数,没有返回值,一个类只能有一个析构函数。下列关于虚函数的说明中,正确的是。(2.0 分)A、抽象类中的成员函数都是虚函数B、虚函数不得是静态成员函数C、只能通过指针或引用调用虚函数D、从虚基类继承的函数都是虚函数下列关于成员函数的描述中,正确的是。(2.0 分)A、成员函数可以有默认参数B、成员函数一定是内联函数C、成员函数没有返回值D、成员函数可以通过类名直接调用函数的形参是。(2.0 分)A、外部变量B、局部变量C、全局变量D、静态变量在那种情况下不需要使用初始化列表。(2.0 分)A、类数据成

15、员B、初始化常量数据成员C、普通的数据成员D、调用基类的构造函数在C+诩言中,char型数据在内存中的存储形式是 。( 2.0分)A、反码B、 补码C、原码D、ASCII 码不是构造函数的特征。(2.0分)A、构造函数可以重载B、构造函数必须指定类型说明C、构造函数可以设置缺省参数D、构造函数的函数名与类名相同关于纯虚函数和抽象类的描述,错误的是( 2.0 分)A、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出B、纯虚函数是一种特殊的函数,它没有具体实现代码C、,该基类的派生类一定不再是抽象类一个基类中声明有纯虚函数D、 抽象类是指具有纯虚函数的类如果在派生类中没有对纯虚函数进行了定义

16、,那这个派生类也是抽象类.不能用来定义对象下列对派生类的描述中,是错误的。(2.0 分)A、派生类中继承的基类成员的访问权限到派生类保持不变B、 一个派生类可以作为另一个派生类的基类C、派生类至少有一个基类D、派生类的成员除了它自己的成员外,还包含了它的基类成员关于关键字 class和typename,下列表述正确的是 。( 2.0分)A、程序中所有的typename 都可以替换为classB、程序中所有的class都可以替换为typenameC、A)和B)都可以D、A)和B)都不可以已知:类A中一个成员函数说明如下 :void Set(A& a);其中,A&的含义是A、将 a

17、 的地址值赋给变量SetB、a是类A对象的引用,用来作函数Set()的参数C、变量A与a按位与作为函数 Set()的参数D、指向类 A 的指针为a在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是A、派生类的对象的地址可以赋给指向基类的指针B、2.0 分)2.0 分)派生类的对象可以直接访问基类中的成员C、 派生类的对象可以初始化基类的引用D、派生类的对象可以赋给基类的对象关于 this 指针使用说法正确的是。(2.0 分)A、保证基类私有成员在子类可以被访问保证基类共有成员在子类可以被访问C、保证每个对象都拥有自己的数据成员,但共享处理这些数据的代码D、保证基类保护成员在子类可

18、以被访问下列函数中,不能重载运算符的函数是。( 2.0 分)A、友元函数B、成员函数C、普通函数D、构造函数下列关于运算符重载的叙述中,正确的是。(2.0 分)A、重载一个二元运算符时,必须声明两个形参B、 有的运算符只能作为成员函数重载C、通过运算符重载,可以定义新的运算符若重载运算符+,则相应的运算符函数名是当一个类的某个函数被说明为virtual 时 ,该函数在该类的所有派生类中。(2.0 分)A、都不是虚函数B、只有被重新说明时才是虚函数C、只有被重新说明为virtual 时才是虚函数D、都是虚函数拷贝构造函数的参数是。(2.0 分)A、某个对象的指针名B、某个对象名C、某个对象的成员

19、名D、某个对象的引用名下列不是描述类的成员函数的是。(2.0 分)A、拷贝构造函数B、析构函数C、友元函数D、构造函数拷贝构造函数的参数是。(2.0 分)A、某个对象的指针名B、 某个对象名C、某个对象的成员名D、某个对象的引用名设 int x=1, y=1; 表达式 (!x|y -)的值是 1。执行语句int i = 10; cout << i+ + i+; 输出结果是。(2.0 分)A、不确定B、22C、20D、21拷贝构造函数的参数通常是。(2.0 分)A、无特殊要求B、对象C、指向对象的指针D、自身类对象的常引用以下叙述中不正确的是。(2.0 分)A、以下是正确的宏定义#d

20、efine IBM_PCA 选项,这样的宏定义运行时未报错,在使用时,就将其看做什么也没有,例如,int x=5;printf("number is %d",BM_DEF x);B、预处理命令行都必须以#号开始C、C+程序在执行过程中对预处理命令行进行处理D、在程序中凡是以#号开始的语句行都是预处理命令行关于在调用模板函数时模板实参的使用,下列表述中正确的是。(2.0 分)A、对于常规参数所对应的模板实参,任何情况下都不能省略B、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略C、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略D

21、、对于虚拟类型参数所对应的模板实参,如果它是参数表中的最后的若干个参数,则都可以省略在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“<>”括起来的参数表 )或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表也可以不要,因此选项D 错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不

22、能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值。( 2.0 分)A、部分相同B、不同C、相同D、 相容一个C+程序的执行是从. (2.0分)A、本程序文件的第一个函数开始,到本程序main 函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main 函数开始,到本程序文件的最后一个函数结束D、本程序的main 函数开始,到 main 函数结束以下对C+语言函数的描述中,正确的是。 (2.0分)A、C+程序必须由一个或一个以上的函

23、数组成B、函数既可以嵌套定义又可以递归调用C、函数必须有返回值,否则不能使用函数D、C+程序中有调用关系的所有函数必须放在同一个程序文件中下列关于友元函数描述,正确的是。(2.0 分)A、在类的外部定义友元函数时必须加上friend 关键字B、一个友元函数不能同时定义为两个类的友元函数C、友元函数是独立于当前类的外部函数D、友元函数必须在类的外部进行定义A、 不能修改数据成员的值B、只能用对象名来调用C、没有 this 指针D、可以用类名或对象名来调用已知类 A 是类 B 的友元 , 类 B 是类 C 的友元 ,则 。(2.0 分)A、类 C 的成员可以访问类B 对象的任意成员B、类 A 的成

24、员函数可以访问类B 对象的任意成员C、类C 一定是类A 的友元D、类A 一定是类C 的友元关于类模板,下列描述错误的是。(2.0 分)A、函数的类模板参数须通过构造函数实例化B、根据建立对象时的实际数据类型,编译器把类模板实例化为模板类C、类模板从普通类派生,也可以从类模板派生D、一个普通基类不能派生类模板在重载一个运算符时,如果其参数表中有一个参数,则该运算符是。(2.0 分)A、选项 B 和 C 都有可能B、二元成员运算符C、 一元友元运算符D、一元成员运算符重载一目运算符没有参数,重载二目运算符要有一个参数关于纯虚函数和抽象类的描述,错误的是( 2.0 分)A、抽象类只能作为基类来使用,

25、其纯虚函数的实现由派生类给出B、一个基类中声明有纯虚函数,该基类的派生类一定不再是抽象类C、纯虚函数是一种特殊的函数,它没有具体实现代码D、抽象类是指具有纯虚函数的类已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下列关于这个函数的叙述中,错误的是。(2.0 分)A、这是运算符-的重载运算符函数B、这个函数所重载的运算符是一个一元运算符C、 这是一个成员函数D、这个函数不改变数据成员的值下列定义数组的语句中正确的是。(2.0 分)A、#define size 10 char str1size,str2size+2;B、char str;C、int

26、num'10'D、int n=5; int ann+2;所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是 。(2.0分)A、数据块B、类C、函数体D、对象下列函数模板的定义中,合法的是。(2.0 分)A、template T abs(T x)return x<o? -x:x;B、template Tabs(T x)return x<0? -x:x;C、template classT abs(T x)return x<0?-x:x;D、templateT abs(T x)return x<0? -x:x;C+对C语言做了

27、很多改进,即从面向过程变成为面向对象的主要原因是 。(2.0分)A、允许函数重载,并允许函数设置缺省参数B、规定函数说明符必须用原型C、增加了一些新的运算符D、 引进了类与对象的概念C+语言中函数调用的方式有 。 (2.0分)A、函数调用作为语句、函数表达式或函数参数三种B、函数调用作为语句一种C、函数调用作为语句或函数表达式两种D、函数调用作为函数表达式一种设 int x=1, y=1; 表达式 (!x|y -)的值是 。(2.0 分)A、-1B、2C、1D、0下面判断是否构成重载函数的条件中,错误的判断条件是。(2.0 分)A、函数返回值不同B、参数顺序不同C、参数类型不同D、参数个数不同

28、以下对C+语言函数的描述中,正确的是。 (2.0分)A、C+程序中有调用关系的所有函数必须放在同一个程序文件中B、函数必须有返回值,否则不能使用函数C、C+程序必须由一个或一个以上的函数组成D、函数既可以嵌套定义又可以递归调用有如下类定义: class XA int x; public: XA(int n) x=n; ; class XB: public XA int y; public: XB(inta,int b); ;在构造函数XB的下列定义中,正确的是 。 ( 2.0分)A、XB:XB(int a,int b):XA(a),XB(b) B、XB:XB(int a,int b):XA(a

29、),y(b) C、XB:XB(int a,int b):x(a),XB(b) D、XB:XB(int a,int b):x(a),y(b) 假设Class Y:public X,陵 Y是类X的派生类,则说明一个Y类的对象时和删除 Y类对象时,调用构造函数和析构函数的次序分别为。(2.0 分)A、Y,X;Y,XB、Y,X;X,YC、 X,Y;Y,X(构造从内到外,析构从外到内)D、X,Y;X,Y解决定义二义性问题的方法有。(2.0 分)A、 使用成员名限定或赋值兼容原则B、使用作用域分辨运算符或虚基类C、使用作用域分辨运算符或成员名限定D、只能使用作用域分辨运算符关于多继承二义性的描述,是错误的

30、。(2.0 分)A、一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性B、派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性C、解决二义性最常用的方法是作用域运算符对成员进行限定D、派生类和它的基类中出现同名函数时,将可能出现二义性设置虚函数的主要目的是。(2.0 分)A、减少目标代码B、提高运行效率C、消除二义性D、简化程序有如下函数模板定义: template T func(Tx,Ty)return x*x+y*y; 在下列对func 的调用中不正确的是 。(2.0 分)A、 funcvint>(3, 5.5)B、 func(

31、3,5)C、 func(3,5.5)D、func v > 3,5)定义对象数组时必须有不需要参数的构造函数(2.0 分) T若有 #define S(a,b) a*b 则语句 area=S(3,2); area 的值为 6. (2.0 分)Tchar ch1 = "student", ch210;ch2=ch1; 是错误的(2.0 分) T数组名是个名字,不可被赋值。要想实现数组拷贝可以用memcpy字符串拷贝还可以用strcpy赋值兼容规则也适用于多继承的组合。(2.0 分) T在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直

32、接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式.定义类的非成员函数运算符重载,必须将它声明为友元函数。(2.0 分) F构造函数和析构函数的返回类型为void( 2.0 分) F(构造函数的名字与类的名字相同,并且不能指定返回类型)构造函数实现类的类型转换,不适合将其它类型转换成类类型。F在说明一个结构变量后,不能整体引用结构体变量,需要逐一引用。T所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类外的函数对它们的访问都是非法的。(2.0 分) F (私有成员还可以被友元函数访问)

33、基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数。T子类可以新添自己的数据成员,但成员函数只能从父类继承。F子类可以新添自己的成员函数,但数据成员只能从父类继承。FC+中有五种作用域分别为文件作用域、块作用域、函数作用域、函数原型作用域和类作用域。T基类构造函数的调用顺序是由它们在派生类的构造函数实现中初始化表中出现的顺序决定的。F常量对象只能调用常量成员函数和静态成员函数,无法调用普通成员函数。T赋值运算符只能作为成员函数进行重载。T(因为编译器会提供一个默认的赋值运算符,你如果把自己定义赋值运算符的写成友元的话,函数的参数列表不一样,不会发生重载)作为虚函数隐含参数的this 指针 ,决定了虚函数调用时执行的代码。T对于函数原型:int fun(int a, int b=300,int c=200,int d=100); 可以使用如下方式调用:fun();F常对象只能调用常成员函数。T包含空格的字符数组输入时,常常使用C+的cin.outline()函数实现。F派生类的虚函数与基类的虚函数需要有不同的形式参数。F派生类能过通过继承关键字改变对基类的函数成员的访问权限。T根据数据的组织形式,可以分为ASCII文件和文

温馨提示

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

评论

0/150

提交评论