版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、单选题1、关于面向对象的程序设计方法,下列说法正确的是_。A:"封装性"指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 B:"多态性"指的是对象的状态会根据运行时要求自动变化 C:基类的私有成员在派生类的对象中不可访问,也不占内存空间 D:在面向对象的程序设计中,结构化程序设计方法仍有着重要作用答案:D 封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部;多态性是指当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为;基类的私有成员对派生类来说是不可访问的,因此在派生类中直接引用基类的私有变量
2、成员是不允许的,可以通过基类的公用成员函数来引用基类的私有变量成员;C+是一种优秀的高级程序设计语言,它是以C语言为基础而逐渐发展起来的。C+语言既保留了传统的结构化程序设计方法,又对流行的面向对象程序设计方法提供了完整的支持。知识点:C+部分/C+语言概述/掌握C+程序的基本框架2、判断字符型变量ch是否为大写英文字母,应使用表达式_。 A:ch>='A'&ch<='Z' B:ch<='A'|ch>='Z' C:'A'<=ch<='Z' D:ch>
3、='A'&&ch<='Z'答案:D C+语言提供了三种逻辑运算符,它们是:!(逻辑非)、&&(逻辑与)、|(逻辑或)。其中!为单目运算符,&&和|为双目运算符。本题的选项中符合题意的是D。知识点:C+部分/数据类型、表达式和基本运算/熟练掌握C+表达式类型及求值规则3、已知下列语句中的x和y都是int型变量,其中错误的语句是_。 A:x=y+; B:x=+y; C:(x+y)+; D:+x=y;答案:C 对于C+、-这样的运算,其操作数必须为一变量,因为x+y是表达式故答案C是错误的。 知识点:C+部分/数据
4、类型、表达式和基本运算/掌握变量的定义与使用方法4、执行语句序列int n;cin>>n;switch(n) case 1: case 2:cout<<'1' case 3: case 4:cout<<'2'break; default:cout<<'3'时,若键盘输入1,则屏幕显示_。 A:1 B:2 C:3 D:12答案:D switch语句又称为开关语句,它也是一种选择语句。switch语句的功能是根据给定表达式的不同取值来决定从多个语句序列中的哪里开始执行。 break语句又称为跳出语句。b
5、reak语句只能用在switch语句和循环语句中。在switch语句中,break用来使执行流程跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来使执行流程无条件地跳出本层循环。知识点:C+部分/C+的基本语句/用switch语句实现多分支选择结构5、下列程序的输出结果是_。#include<iostream>using namespace std;int main()char a="Hello,World"char *ptr=a;while(*ptr) if(*ptr>='a'&&*ptr
6、<='z') cout<<char(*ptr+'A'-'a'); else cout<<*ptr; ptr+;return 0; A:HELLO,WORLD B:Hello,World C:hELLO,wORLD D:hello,world答案:A 此程序段的功能是将字符串中的小写字母转换为大写字母并将其输出。知识点:C+部分/C+的基本语句/用if语句实现分支结构6、已知:int m=10;在下列定义引用的语句中,正确的是_。 A:int &x=m; B:int y=&m; C:int &z
7、; D:int &t=&m;答案:A 本题主要考查了对引用及地址(&)的理解,引用实际上就是别名,它与被引用变量拥有同一个地址空间,对于选项A而言,其操作实际上就是为m赋于一个别名x,因此选项A是对的。对于选项B,&m表示m的地址,而y是一个整型变量,在C+中不能从地址值隐式转换为整型值,故选项B是错的。对于选项C,引用必须要用被引用的对象,即引用必须要初始化;选项D中t是一个整型应用,而其被引用的对象却是m的地址,存在着与选项B类似的错误,因此选项D也是错的。知识点:C+部分/数据类型、表达式和基本运算/掌握C+运算符的种类、运算优先级和结合性7、下列函数原型
8、声明中错误的是_。 A:void Fun(int x=0,int y=0); B:void Fun(int x,int y); C:void Fun(int x,int y=0); D:void Fun(int x=0,int y);答案:D 在C+中,可以为参数指定默认值,在函数调用时没有指定与形参相对应的实参时就自动使用默认值。默认参数可以简化复杂函数的调用。 默认参数通常在函数名第一次出现在程序中的时候,如在函数原型中,指定默认参数值。指定默认参数的方式从语法上看与变量初始化相似。例如:void myfunc(int x=0,int y=1); 如果一个函数中有多个参数,则默认参数应从右
9、至左逐个定义。知识点:C+部分/掌握函数的有关使用/函数的定义方法和调用方法8、已知程序中已经定义了函数test,其原型是int test(int,int,int);,则下列重载形式中正确的是_。 A:char test(int,int,int) B:double test(int,int,double) C:int test(int,int,int=0); D:float test(int,int,float=3.5F);答案:B 在对函数进行重载时,不允许为其指定缺省参数,故C、D是错的,同时,对于重载的函数原型间不允许有类型完全相同的参数列表,故A是错的,对于返回类型,在重载时没有特别的
10、要求。知识点:C+部分/掌握函数的有关使用/函数重载9、有以下程序#include<iostream>int i=0;void fun() static int i=1; std:cout<<i+<<','std:cout<<i<<','int main()fun();fun();return 0;程序执行后的输出结果是_。 A:1,2,1,2, B:1,2,2,3, C:2,0,3,0, D:1,0,2,0,答案:D 本题主要考查了static型的变量,在C+中可以为函数或类指定static型的变量,
11、如果将一个变量指定为static型,则该变量在内存中仅有一个副本,同时在函数或类执行完成后空间不会被释放,以前的值将会被保留。同时还考查了C+中变量作用域的问题,在C+中如果要将一个变量限定在指定的范围内,可以将该作用域用包含起来,同时可在函数的外部指定全局变量,该变量的作用范围是从当前位置开始到程序结束。对于"static int i=1;"中的i,初始值为1,在调用std:cout<<i+<<','后,将输出"1,",然后自加1,对于第二句std:cout<<i<<','
12、,该i所代表的应该是全局变量"i",故输出"0,"。在第二次执行fun()时,由于第一i为static型变量,其值是保留的,故输出"2,",对于第二个i则输出"0,"。知识点:C+部分/掌握函数的有关使用/变量的作用域、生存周期和存储类别10、已知函数f的原型是:void f(int *a,long &b);,变量v1、v2的定义是:int v1;long v2;,正确的调用语句是_。 A:f(v1,&v2); B:f(v1,v2); C:f(&v1,v2); D:f(&v1,&am
13、p;v2);答案:C 对于函数f而言,其第一个参数为整型指针,第二个参数为一引用(实际上就是按地址传递参数),该引用是一长整型的引用。 对于选项A、B,实参变量 v1为整型,而所要传递的对应的形参变量a是指针型,它接受的是地址,若将实参变量v1改为&v1,那么这一传递就是正确的;对于选项A、D,&v2为一地址,传递给整型引用,也将导致出错。知识点:C+部分/掌握函数的有关使用/函数的定义方法和调用方法11、有以下类定义class MyClasspublic:MyClass()cout<<1;则执行语句MyClass a,b2,*p2;后,程序的输出结果是_。 A:1
14、1 B:111 C:1111 D:11111答案:B class MyClass定义了一个类,其中MyClass()cout<<1;为其的构造函数,当程序创建类MyClass的实例时,该函数将会被调用,在执行"MyClass a,b2,*p2;"时,一共创建了3个这样的实例,故一共执行构造函数3次,对于变量p,则是声明了一个指针数组,该数组中的元素是指向类MyClass实例的指针,本身并没有创建类的实例。知识点:C+部分/熟练掌握类与对象的相关知识/类的定义方式、数据成员、成员函数及访问权限13、关于动态存储分配,下列说法正确的是_。 A:new和delete是
15、C+语言中专门用于动态内存分配和释放的函数 B:动态分配的内存空间也可以被初始化 C:当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete 释放内存空间 D:当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new答案:B new和deleted在C+中用来申请与释放内存的运算,不是函数,故选项A错。动态内存分配时是可以对其进行初始化的,如对类的初始化。在C+中,没有垃圾回收装置,系统本身不会自动回收内存,选项C也错。由于采用了new操作分配内存,在内存分配失败时,产生一个NULL指针,不会导致系统的崩溃,因此建议使用new操作,故选项D错。知识点:C+部分/数组、指
16、针与引用/动态存储分配14、有以下程序#include<iostream>using namespace std;class MyClasspublic:MyClass(int n)number=n;/ 拷贝构造函数MyClass(MyClass& other)number=other.number;MyClass() private: int number;MyClass fun(MyClass p) MyClass temp(p); return temp;int main() MyClass obj1(10),obj2(0); MyClass obj3(obj1);
17、obj2=fun(obj3); return 0;程序执行时,MyClass类的拷贝构造函数被调用的次数是_。 A:5 B:4 C:3 D:2答案:B obj1(10)将执行一次构造函数,obj2(0)也将执行一次构造函数;obj3(obj1)将以obj1作为参数执行一次构造函数; fun(obj3)中的temp(p)也将执行一次构造函数,而fun本身是按值传递参数的,形参在fun函数内也要分配独立的空间,故也要执行一次构造函数,对于其返回结果也是MyClass类型的,同样需要执行一次构造函数,故一共要执行4次。知识点:C+部分/熟练掌握类与对象的相关知识/构造函数与析构函数15、在公有派生的
18、情况下,派生类中定义的成员函数只能访问原基类的_。 A:公有成员和私有成员 B:私有成员和保护成员 C:公有成员和保护成员 D:私有成员、保护成员和公有成员答案:C 在一个派生类中,其成员由两部分构成:一部分是从基类继承得到的,另一部分是自己定义的新成员,所有这些成员仍然分为公有、私有和保护三种访问属性。其中,从基类继承下来的全部成员构成派生类的基类部分,这部分的私有成员是派生类不能直接访问的,公有成员和保护成员则是派生类可以直接访问的,但是它们在派生类中的访问属性将随着派生类对基类的继承方式而改变。知识点:C+部分/掌握类的继承与派生知识/派生类的定义和访问权限16、在C+中用来实现运行时多
19、态性的是_。 A:重载函数 B:析构函数 C:构造函数 D:虚函数答案:D 构造函数是类在创建实例时自动执行的函数,它不能实现运行时多态;析构函数是类在销毁其实例时创建的,也不能实现运行时多态,重载函数能够使相同的的功能具有统一的接口,但可以有不同的参数。虚函数可 知识点:C+部分/了解多态性概念/虚函数机制的要点_17、一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是_。 A:每个派生类的构造函数都要为虚基类构造函数提供实参 B:多继承时有可能出现对基类成员访问的二义性问题 C:使用虚基类可以解决二义性问题并实现运行时的多态性 D:建立最远派生类对象时,虚基类的
20、构造函数会首先被调用答案:C 虚基类的构造函数将在其派生类创建实例时被执行,在执行时,派生类必须为虚基类的构造函数提供实参。在多重继承中,如果通过两条以上的路径对同一基类实行继承,这样,在派生类中将有多个基类的副本,从而产生二义性。在采用虚基类时,其成员将仅存唯一的副本,这样就可以解决二义性问题,但不能够实现运行时多态,可通过抽象类或虚拟函数来实现,虚基类的构造函数将会首先被执行。知识点:C+部分/掌握类的继承与派生知识/虚基类18、在一个类体的下列声明中,正确的纯虚函数声明是_。 A:virtual void vf()=0; B:void vf(int)=0; C:virtual int v
21、f(int); D:virtual void vf(int)答案:A 本题考查了纯虚函数的定义,在C+中要定义一个函数为虚函数,可在函数定义前加上virtual关键字,如果要定义一个函数为纯虚函数,只要在函数原型后加上"=0"就可以了。对于纯虚函数,必须要在其派生类中实现,因此对于一个拥有纯虚函数的类,实质上就是一个抽象类。对于这种类,不能为其创建实例。知识点:C+部分/了解多态性概念/纯虚函数与抽象基类、虚函数19、在下面的运算符重载函数的原型中,错误的是_。 A:Volume operator-(double,double); B:double Volume:opera
22、tor-(double); C:Volume Volume:operator-(Volume); D:Volume operator-(Volume,Volume);答案:A 本题主要考查了运算符的重载。对于运算符的重载,通常有两种形式。1、操作结果 operator 运算符(操作数1,操作数2)2、操作结果 类:operator 运算符(操作数) 对于上述选项中,B、C为第二种类型,A、D为第一种类型,在第一种类型中,两个操作数必须至少有一个自定义类,对选项A而言,其两个操作数均为double型数据,因此选项A是错误的运算符重载。知识点:C+部分/了解多态性概念/了解运算符重载20、下列是模
23、板声明的开始部分,其中正确的是_。 A:template<T> B:template<class T1,T2> C:template<class T1,class T2> D:template<class T1;class T2>答案:C 本题主要考查了模板的定义,在C+中可以在定义类时不指定具体的数据类型,而在编译时进行前期绑定,对于多参数的模板,在参数间用","隔开,如果模板参数为一个类,在模板参数前面必须加上class关键字。 知识点:C+部分/模板/简单了解函数模板的定义和使用方式21、执行语句序列ofstream o
24、utfile("DATA.DAT");if()cout<<"OK"else cout<<"FAIL"后,如果文件打开成功显示"OK",否则就显示"FAIL"。由此可知,上面if语句的处的表达式应是_。 A:out() 或 outfile B:out() 或 !outfile C:out() 或 outfile D:out() 或 !outfile答案:C 在采用ofstream类打开文件时,在创建其实例时,可在构造函数中输入要打开的文件名,如果打开成功,则返回一个ofst
25、ream类的实例,否则创建实例失败,返回0,同时可通过good()或fail()方法来判断文件是否已打开,如果正常打开则fail()方法返回0,good()方法返回非零,否则fail()返回非零,good()返回0。知识点:C+部分/C+的基本语句/用if语句实现分支结构22、C+流中重载的运算符>>是一个_。 A:用于输出操作的非成员函数 B:用于输入操作的非成员函数 C:用于输出操作的成员函数 D:用于输入操作的成员函数答案:B C+流的输入运算符>>和输出运算符<<只能作为非类成员函数重载。在一个类中,如有必要,可将>>或<<声
26、明为友元函数。 知识点:C+部分/输入输出流/掌握C+流的概念23、有以下类定义class Pointpublic: Point(int x=0,int y=0)_x=x;_y=y; void Move(int xOff,int yOff) _x+=xOff;_y+=yOff; void Print() const cout<<'('<<_x<<','<<_y<<')'<<endl; private: int _x,_y;下列语句中会发生编译错误的是_。 A:Point pt
27、;pt.Print(); B:const Point pt;pt.Print() C:Point pt;pt.Move(1,2); D:const Point pt;pt.Move(1,2);答案:D 本题主要考查了const关键字的使用。可以在类型或类名前加上const来声明一个在运行时不可改变的对象或变量。如果声明了一个常量对象,则其内部成员均不可改变,在编译时会检查其对应类的成员变量是否为左值,如果是,则会出现错误。对于B而言,由于在对象pt中的print方法中没有发现存在左值成员变量,故在编译时不会出错。知识点:C+部分/熟练掌握类与对象的相关知识/类的定义方式、数据成员、成员函数及访
28、问权限24、有以下类定义class MyClassprivate:int id;char gender;char *phone;public:MyClass():id(0),gender('# '),phone(NULL)MyClass(int no,char ge='# ',char *ph=NULL)id=no;gender=ge;phone=ph;下列类对象定义语句中错误的是_。 A:MyClass myObj; B:MyClass myObj(11,""); C:MyClass myObj(12,'m'); D:MyC
29、lass myObj(12);答案:B 对于A,由于在创建MyClass的实例myObj时,没有参数,所以其调用了第一个构造函数。对于B,由于有两个参数,故其调用了第二个构造函数,第二个构造函数有两个缺省参数,在调用时,实参会按从左到右的顺序依次传给形参,所以第二个参数""会传递给形参ge,而在原型中ge为字符型,实参为指向字符的指针,故在编译时会出现错误。C与D都能够正确的实现参数的传递。知识点:C+部分/熟练掌握类与对象的相关知识/对象和对象指针的定义与使用25、有以下程序#include<iostream>using namespace std;class
30、 Complexpublic:Complex(double r=0,double i=0):re(r),im(i)double real() const return re; double imag() const return im; Complex operator+(Complex c)const return Complex(re+c.re,im+c.im); private:double re,im;int main()Complex a=Complex(1,1)+Complex(5);cout<<a.real()<<'+'<<a.
31、imag()<<'i'<<endl;return 0;程序执行后的输出结果是_。 A:6+6i B:6+1i C:1+6i D:1+1i答案:B 本题定义了一个复数类,并在该类上重载了+运算符。在main函数中,定义了一个复数类a,其值为两个复数1+i与5的和。在复数类中,定义了real与imag方法,分别用来取出复数的实部与虚部。知识点:C+部分/掌握类的继承与派生知识/基类指针与派生类指针的使用26、关于C+的特点下列说法不正确的是_。 A:C+是以C语言为基础逐渐发展演变而成的 B:C+是一种面向对象的程序设计语言 C:C+是一种低级语言 D:C+
32、是程序员和软件开发者在实践中创造的答案:C 本题考查的是c+的一些基本概念。 c+是一种面向对象的高级语言,是从c语言发展演变过来的,是程序员在实际开发系统的工作中创造的。低级语言包括汇编语言和机器语言。知识点:C+部分/C+语言概述/了解C+语言的词汇27、关于字符常量的写法,错误的是_。 A:'/' B:'0' C:'a' D:"a"答案:D 本题考查的是字符常量的表示方法。 字符常量是以单引号作为起止符号,中间有一个或者若干个字符。例如'a','b',而'x6E','
33、;n'等单引号内有多个字符的表示转定义字符。双引号括起来的字符表示字符串常量。知识点:C+部分/数据类型、表达式和基本运算/掌握C+数据类型及其定义方法28、对于表达式bool x=5,int a=x=5,变量a的值为_。 A:0 B:1 C:5 D:false答案:A 本题考查的是运算符的优先级和变量之间的相互赋值。 如果对bool类型的变量赋予其一个非0的值。其值为true。而值为true的一个bool变量当其和int类型的变量相互赋值时,其值为1,所以x=5返回一个0值。知识点:C+部分/数据类型、表达式和基本运算/掌握C+运算符的种类、运算优先级和结合性29、执行下列语句:#i
34、nclude<iostream>using namespace std;int main()int a=3;if(a=5)cout<<a+<<endl;elsecout<<a<<endl;return 0;程序的输出是_。 A:3 B:4 C:5 D:6答案:C 本题考查的是if-else结构和"="运算符与"="运算符的区别。 if条件语句1 else语句2,语句的执行过程是:首先判断条件是否为真(不为0),如果为真则执行语句1,否则执行语句2。本题的条件是a=5,意思是把5赋予变量a,它将a
35、置5且返回一个真值。知识点:C+部分/C+的基本语句/用if语句实现分支结构30、下列for语句的循环次数为_。for(int i=0,x=0;!x&&i<=5;i+); A:0 B:5 C:6 D:无穷次答案:C 本题考查的是for语句的结构和逻辑运算符。 for语句的语法格式如下:for(表达式1;表达式2;表达式3)语句块。其中表达式1是for循环的初始化部分,一般用来设置循环变量的初始值;表达式2是for循环的条件部分,用来判断循环能否继续进行的条件;表达式3是for循环的增量部分,一般用来修改循环变量的值。语句块为for循环的循环体,它是要被重复执行的代码。&a
36、mp;& 为逻辑运算符,只有当其两边的表达式都为真时它才返回一个真值。知识点:C+部分/C+的基本语句/用for语句实现循环结构31、关于break语句的描述不正确的是_。 A:break语句可用在循环体中,它将是执行的流程跳出本层循环。 B:break语句可用在switch语句中,它使执行的流程跳出当前switch语句。 C:break语句可用在if语句中,它可使执行的流程跳出当前的if语句。 D:break语句在一层循环体中可出现多次。答案:C 本题考查的是break语句的基本概念。 break语句只能用在switch语句和循环语句中。在switch语句中,break用来使执行流程
37、跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来使执行流程无条件跳出本层循环。常与if语句结合使用,意思当条件满足跳出循环。但不是跳出当前if语句的意思。知识点:C+部分/C+的基本语句/转向语句(goto,continue,break和return)32、将数组int a4=1,2,3,4全部输出,下列语句正确的是_。 A:cout<<a; B:cout<<a4; C:for(int i=0;i<=4;i+)cout<<ai; D:for(int i=0;i<4;i+)cout<<ai;答案:D
38、本题考查的是数组的输出操作。 在C+中数组的下标是从0开始的,最大的下标比数组元素个数少1。不能将数值数组做为一个整体输出,要对其进行输出必需通过循环语句逐个输出。知识点:C+部分/数组、指针与引用/掌握数组的定义、初始化和访问33、关于指针,下列说法错误的是_。 A:指针中存放的实际上是内存单元的地址 B:指针根据其所指向变量的类型的不同,其所占用内存大小也不同 C:可以在指针定义的同时对其进行初始化 D:相同类型的指针之间可以相互赋值答案:B 本题考查的是指针的一些基本概念。 指针是一种可以用来存放其它变量地址的特殊数据类型。其声明的形式为:类型*变量名,例如 int *pi;char *
39、pc;可以在其刚声明的时候就对其初始化。由于其存放的是内存单元的地址,所以其大小一般都是4个字节。 知识点:C+部分/数组、指针与引用/指针与指针变量的概念,指针与地址运算符,指针与数组34、执行下列语句后,屏幕的输出结果是_。#include<iostream>using namespace std;int main()int a=5;int *pa=&a;int &b=a;b+;cout<<(*pa)+<<endl;return 0; A:5 B:6 C:7 D:8答案:B 本题主要考查指针和引用的使用。 引用是个别名,建立时须用另一个数
40、据对象的名字进行初始化,以确定该引用所代表的数据对象。此后对引用的任何操作实际上就是代表的数据对象的操作。知识点:C+部分/数组、指针与引用/指针与指针变量的概念,指针与地址运算符,指针与数组35、执行下列程序后,屏幕的输出是_。#include<iostream>using namespace std;void s a,int b)int tem=a;a=b;b=tem;cout<<"a="<<a<<",b="<<b<<endl;int main()int a=3,b=2;s);c
41、out<<"a="<<a<<",b="<<b<<endl;return 0; A:a=2,b=3a=3,b=2 B:a=3,b=2a=3,b=2 C:a=2,b=3a=2,b=3 D:a=3,b=2a=2,b=3答案:A 本题主要考查了函数的参数传递。 C+中默认的参数传递是传值,是将实参的副本传递给被调用函数的形参。在被调用函数中对形参的任何改动都不会影响实参。知识点:C+部分/掌握函数的有关使用/形式参数与实在参数,参数值的传递36、执行下列程序语句后,屏幕输出为_。#include<
42、iostream>using namespace std;int n=5;int main()int n=3;n+;:n+;cout<<n<<endl;return 0; A:3 B:4 C:5 D:6答案:B 本题考查的是变量的作用域。 C+中变量有全局变量和局部变量。不在任何函数之内声明的变量即为全局变量。当在一个函数中声明的局部变量与全局变量重名时。局部变量会将全局变量屏蔽掉。如果要引用全局变量可以变量名的前面加":"。知识点:C+部分/掌握函数的有关使用/变量的作用域、生存周期和存储类别37、关于类的概念下列说法正确的是_。 A:类和结
43、构体是同一个概念 B:类的数据成员外界都不可访问 C:类可以没有显式的构造函数 D:类一定要有显式的析构函数答案:C 本题考查的是类的一些基本概念。 将数据和处理数据的函数封装在一起就构成一个类。相对于结构体,类有一些更为先进的特性。只有声明为保护和私有的数据成员外界才是不和直接访问的。类可以没有显式的构造和析构函数,这时系统将会提供一个默认的构造函数或者析构函数。 知识点:C+部分/熟练掌握类与对象的相关知识/类的定义方式、数据成员、成员函数及访问权限38、对于下面的类定义,如果要为其添加一个析构函数,对于析构函数定义正确的是_。class MyFirstprivate:int a;publ
44、ic:MyFirst(int giva_a=0)a=give_a; A:void MyFirst() B:MyFirst() C:void MyFirst() D:MyFirst void()答案:B 本题考查的是析构函数的定义。 析构函数是类中的一种特殊的成员函数,它用来完成对象删除前的一些清理工作。析构函数不指定返回值类型。没有参数,同时不能重载。 知识点:C+部分/熟练掌握类与对象的相关知识/构造函数与析构函数39、关于静态数据成员说法错误的是_。 A:静态数据成员不单独属于任何一个对象,是属于整个类的 B:在使用之前必需对静态数据成员进行初始化 C:静态数据成员的初始化时前面不加sta
45、tic关键字 D:只有静态的成员函数才能改变静态数据成员的值答案:D 本题考查了静态数据成员的概念。 对于一般的数据成员在每一个对象中都会有其副本。而静态数据成员只有一个副本,这个副本被所有的类所共享。对于所有的成员函数都可以访问静态数据成员。知识点:C+部分/熟练掌握类与对象的相关知识/静态数据成员与静态成员函数的定义与使用方式40、关于友元说法错误的是_。 A:友元函数可以访问类中的所有数据成员 B:友元函数必须被声明在public区 C:友元类的所有成员函数都是另一个类友元函数 D:友元函数不可以在类内部被定义答案:B 本题主要考查友元函数和友元类的一些概念。 友元提供了不同类或对象的成
46、员函数之间、类的成员函数与一般函数之间进行数据共享的机制。对于一个类可以利用friend将一般函数、其它类成员函数或者其它类声明为友元。友元的声明可以放在类的任何一个区域。但是友元的实现不可以在类内部。知识点:C+部分/熟练掌握类与对象的相关知识/友元函数和友元类_41、对于下面声明的类,对于所给的几个语句,正确的是(假设所给语句是主函数中的语句)_。class MyClassprivate:int data;public:MyClass(int g_data)data=g_data;void show()cout<<data<<endl; A:MyClass mfir
47、st; B:MyClass *pm; C:MyClass.data=6; D:MyClass.show();答案:B 本题考查了类的定义和构造函数的调用。 对于类,如果没有为其显式的声明构造函数则系统会为其提供一个默认的构造函数。如果提供了构造函数则会将系统提供的默认的构造函数覆盖。构造函数调用时,实参必须与形参匹配。但是声明一个对象指针的时候,不是定义一个对象,不调用对象的构造函数。知识点:C+部分/熟练掌握类与对象的相关知识/类的定义方式、数据成员、成员函数及访问权限2、执行下列语句后,屏幕的显示为_。#include<iostream>using namespace std;
48、class Firstprotected:int fir_data;public:First(int g_data=0)fir_data=g_data;void show()cout<<fir_data<<endl;class Second:public Firstprivate:int sec_data;public:Second(int g_f_data,int g_s_data):First(g_f_data),sec_data(g_s_data)void show()cout<<fir_data<<" "<<
49、;sec_data<<endl;int main()Second sec(5,3);sec.show();return 0; A:5 3 B:3 C:5 D:3 5答案:A 本题考查了类的继承。 类的继承是新的类从已有的类那里得到已有的特性。派生类除了从基类继承过来数据成员,还可以新增加数据成员和成员函数。对于基类中已有成员函数,派生类可以通过从定义将其覆盖掉。本题的Second类的void show()方法就是将其基类的void show()方法覆盖掉的。知识点:C+部分/掌握类的继承与派生知识/继承基类的数据成员与成员函数43、虚函数主要是为了实现类的_。A:封装性 B:抽象性
50、 C:多态性 D:继承性答案:C 本题主要考查多态的概念。 类的多态性包括编译时多态和执行时多态。编译时多态通过函数重载实现,运行时多态通过虚函数实现。知识点:C+部分/掌握类的继承与派生知识/虚基类44、关于抽象类,下列表述正确的是_。 A:抽象类的成员函数至少有一个没有实现 B:派生类必须实现作为基类的抽象类中的纯虚函数 C:派生类不可能成为抽象类 D:抽象类不能用来定义对象答案:D 本题考查了抽象类的概念。 拥有纯虚函数的类称为抽象类。抽象类不能用来定义对象。如果一个抽象类的派生类没有重定义来自基类的某个纯虚函数,则该函数在派生类中仍是纯虚函数,该类仍为抽象类。知识点:C+部分/了解多态
51、性概念/纯虚函数与抽象基类、虚函数45、执行下列程序语句后,屏幕输出为_。#include<iostream>using namespace std;class Pointprivate:float x,y;public:Point(int g_x=0,int g_y=0)x=g_x,y=g_y;void show()cout<<"("<<x<<","<<y<<")"<<endl;Point operator +(Point p1)return Poi
52、nt(x+p1.x,y+p1.y);int main() Point p1(3,5),p2(2,4); Point p=p1+p2;p.show();return 0; A:(3,5) B:(2,4) C:(1,1) D:(5,9)答案:D 本题考查了运算符的重载。 运算符重载是针对C+原有的运算符进行的,不可能通过重载创造出新的运算符。".",".*","->*" ,":","?:"这五个运算符是不能重载的。本题是对'+'的重载。 知识点:C+部分/了解多态性概念/了解运
53、算符重载46、有如下模板定义:template<class T>T func(T x,T y)return x*x+y*y;在下列对func的调用中不正确的是_。 A:func(3,5) B:func<>(3,5) C:func(3,5.5) D:func<int>(3,5.5)答案:C 本题考查的是一个函数模板。 声明一个函数模板的格式如下:template<模板形参表声明><函数声明>,模板函数的调用是可以省略实参模板的。但是实参模板的省略是有条件的。如果从模板函数实际参数列表获得的信息有矛盾,则不能省略实际参数模板。 知识点:C
54、+部分/模板/简单了解函数模板的定义和使用方式47、关于类模板下列说法不正确的是_。 A:用类模板定义一个对象时,不能省略实际参数 B:类模板只是虚拟类型的参数 C:类模板本身在编译中不会生成任何代码 D:类模板的成员函数都是模板函数答案:B 本题考查了类模板的定义。 类模板的声明格式为template<模板形参表声明><类声明>,类模板的成员函数都是模板函数。知识点:C+部分/模板/简单了解类模板的定义和使用方式48、在进行了任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态;其中只能用于检测输入操作的函数名是_。 A:fail() B:eof() C:ba
55、d() D:good()答案:B 本题考查了C+中流的函数。 可以用文件对象的下列成员函数来判别文件流的当前状态:good():刚进行的操作成功则返回true,否则返回false;fail():与good()相反;bad():如果进行了非法操作返回true,否则返回false。eof():进行输入操作时,若达到文件尾则返回true,否则返回false;知识点:C+部分/输入输出流/掌握C+流的概念49、对于下列语句动态分配的内存,其释放语句正确的是_。int *pa=new 10; A:delete pa0; B:delete pa; C:delete *pa; D:delete pa;答案:D 本题考查的是动态分配空间和释放。 对于用new分配的多个内存空间,可以用deletename,将所分配的所有内存释放掉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零售药店安全责任制度
- 食品厂员工安全责任制度
- 食堂五员岗位责任制度
- 2026中共宁波市鄞州区委党校招聘事业编制教师2人备考题库(浙江)附答案详解(培优b卷)
- 餐饮两个责任制度
- 饭堂厨房岗位责任制度
- 2026浙江杭州市国有资本投资运营有限公司春季招聘备考题库附完整答案详解(夺冠系列)
- 驾驶安全责任制度
- 龙头企业无领导责任制度
- 2026中国科大基本建设处劳务派遣岗位招聘4人备考题库(黄金题型)附答案详解
- 2026云南楚雄高新技术产业开发区消防救援大队招聘7人笔试备考试题及答案解析
- 安全生产违法行为处罚办法解读课件
- 教会教牧考勤制度
- 2026年南京机电职业技术学院单招职业倾向性测试题库附答案详解ab卷
- 介入治疗围手术期疼痛管理专家共识2026
- 小学数学新人教版二年级下册第一单元 有余数的除法教案(2026春)
- 四川美捷森电路技术有限公司高精密双面多层电路板产业化项目环评报告
- 2026年春冀教版(新教材)小学数学二年级下册教学计划及进度表
- 新版部编人教版七年级下册道德与法治全册教案(完整版)教学设计含教学反思
- 广东科学技术职业学院珠海校区物业服务采购项目用户需求书
- 金属非金属地下矿山人行梯子间设置细则
评论
0/150
提交评论