C++考试题库及答案(共49页).doc
精选优质文档-倾情为你奉上判断char型变量cl是否为小写字母的正确表达式是_。(2.0分)A、B、C、D、假定MyClass为一个类,则执行"MyClass a(2),b5,*c4"后,执行构造函数的次数为_。(2.0分)A、B、C、D、char *s1="hello",*s2;s2=s1;则_。(2.0分)A、B、D、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是_。(2.0分)A、B、C、D、C+异常处理机制中没有_。(2.0分)A、B、C、D、所谓多态性是指_。(2.0分)A、B、C、D、关于new运算符的下列描述中,_是错的。(2.0分)A、B、C、D、以下正确的说法是:在C+语言中进行值传递时_。(2.0分)A、B、C、D、C+类体系中,能被派生类继承的是_。(2.0分)A、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、在下列运算符中,不能重载的是_。(2.0分)A、B、C、D、下列运算符中,_运算符在C+语言中不能重载。(2.0分)A、B、C、D、可以通过友元函数重载的运算符为_。(2.0分)A、B、C、D、不能被重载的运算符 1、. (成员访问运算符) 2、.* (成员指针访问运算符) 3、: (域运算符) 4、sizeof(长度运算符) 5、?: (条件运算符)下列运算符中,只能作为类成员函数重载的是_。(2.0分)A、B、C、D、类MyA的拷贝初始化构造函数是_。(2.0分)A、B、C、D、用cin为整型变量输入数据时,如果从键盘输入的不是数字,输入后整型变量中的结果会是:_(2.0分)A、B、C、D、在C+语言中,引用数组元素时,其数组下标的数据类型允许是_。(2.0分)A、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、下列关于运算符重载不正确的是_。(2.0分)A、B、C、D、在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是_。(2.0分)A、B、C、D、 +和*都是二元运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中当作为非成员函数重载时有两个参数。以下叙述中正确的是_。(2.0分)A、B、C、D、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是_。(2.0分)A、B、C、D、不能作为重载函数的调用的依据是_。(2.0分)A、B、C、D、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_。(2.0分)A、B、C、D、在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式: 函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。 函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如: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、B、C、D、若i为整型变量,则以下循环执行次数是_。 for(i=2;i=0;) cout<<i-;(2.0分) A、B、C、D、设"char *s;",以下正确的表达式是_。(2.0分)A、B、C、D、下列程序段的输出结果为_。 #include void main() char s="123",*p; p=s; cout<<*p+<<endl;(2.0分) A、B、C、D、如果有如下语句 char str20; cin >> str; cout << str; 执行时输入的是“this is a test line!”,则输出的内容是_。(2.0分)A、B、C、D、 cin流遇空白符号结束,因而只会读入第一个单词this,输出this关于析构函数的特征,正确的是_。(2.0分)A、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、在C+语言中,char型数据在内存中的存储形式是_。(2.0分)A、B、C、D、_不是构造函数的特征。(2.0分)A、B、C、D、关于纯虚函数和抽象类的描述,错误的是_(2.0分)A、B、C、D、如果在派生类中没有对纯虚函数进行了定义,那这个派生类也是抽象类.不能用来定义对象下列对派生类的描述中,_是错误的。(2.0分)A、B、C、D、关于关键字class和typename,下列表述正确的是_。(2.0分)A、B、C、D、已知:类A中一个成员函数说明如下: void Set(A& a); 其中,A&的含义是_。(2.0分)A、B、C、D、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是_。(2.0分)A、B、C、D、关于this指针使用说法正确的是_。(2.0分)A、B、C、D、下列函数中,不能重载运算符的函数是_。(2.0分)A、B、C、D、下列关于运算符重载的叙述中,正确的是_。(2.0分)A、B、C、D、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中_。(2.0分)A、B、C、D、拷贝构造函数的参数是_。(2.0分)A、B、C、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、C、D、拷贝构造函数的参数通常是_。(2.0分)A、B、C、D、以下叙述中不正确的是_。(2.0分)A、A选项,这样的宏定义运行时未报错,在使用时,就将其看做什么也没有,例如, int x=5; printf("number is %d",BM_DEF x);B、C、D、关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(2.0分)A、B、C、D、在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值_。(2.0分)A、B、C、D、一个C+程序的执行是从_.(2.0分)A、B、C、D、以下对C+语言函数的描述中,正确的是_。(2.0分)A、B、C、D、下列关于友元函数描述,正确的是_。(2.0分)A、B、C、D、友元函数_。(2.0分)A、B、C、D、已知类A是类B的友元, 类B是类C的友元,则_。(2.0分)A、B、C、D、关于类模板,下列描述错误的是_。(2.0分)A、B、C、D、在重载一个运算符时,如果其参数表中有一个参数,则该运算符是_。(2.0分)A、B、C、D、一元成员运算符重载一目运算符没有参数,重载二目运算符要有一个参数关于纯虚函数和抽象类的描述,错误的是_(2.0分)A、B、C、D、已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下列关于这个函数的叙述中,错误的是_。(2.0分)A、B、C、D、下列定义数组的语句中正确的是_。(2.0分)A、B、C、D、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是_。(2.0分)A、B、C、D、下列函数模板的定义中,合法的是_。(2.0分)A、C、D、C+对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是_。(2.0分)A、B、C、D、C+语言中函数调用的方式有_。(2.0分)A、B、C、D、设 int x=1, y=1; 表达式(!x|y-)的值是_。(2.0分)A、B、C、D、下面判断是否构成重载函数的条件中,错误的判断条件是_。(2.0分)A、B、C、D、以下对C+语言函数的描述中,正确的是_。(2.0分)A、B、C、D、有如下类定义: class XA int x; public: XA(int n) x=n; ; class XB: public XA int y; public: XB(int a,int b); ; 在构造函数XB的下列定义中,正确的是_。(2.0分)A、B、C、D、假设Class Y:public X,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时 ,调用构造函数和析构函数的次序分别为_。(2.0分)A、B、C、(构造从内到外,析构从外到内)D、解决定义二义性问题的方法有_。(2.0分)A、B、C、D、关于多继承二义性的描述,_是错误的。(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、funcint(3,5.5)B、C、D、定义对象数组时必须有不需要参数的构造函数(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在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式.定义类的非成员函数运算符重载,必须将它声明为友元函数。(2.0分)F构造函数和析构函数的返回类型为void(2.0分)F(的名字与类的名字相同,并且不能指定)构造函数实现类的类型转换,不适合将其它类型转换成类类型。F在说明一个结构变量后,不能整体引用结构体变量,需要逐一引用。T所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类外的函数对它们的访问都是非法的。(2.0分)F (私有成员还可以被友元函数访问)基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数。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文件和文本文件两种。F(应为ASCII文件和二进制文件)对于内联函数,c+编译器执行内联扩展,将函数代码直接插入每一处调用处.由此可以减少函数调用的开销。T如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。T容器(container)是用来存储其他对象的对象,它是用模板技术实现的。T类的友元函数可以访问该类对象的所有成员。T类的构造函数可以有默认参数,但类内的普通成员函数不能有默认参数。F可以显式调用对象的构造函数。F在运算符重载中,operator是保留关键字,表示运算符函数T友元函数访问对象中的成员可以不通过对象名。F友元函数是在类声明中由关键字friend修饰说明的类的成员函数。F进行宏定义时,宏名必须使用大写字母表示。FC+语言把文件看作是字符(字节)的序列,即由一个一个字符(字节)的数据按照随机顺序组成。F静态数据成员必须在类外定义和初始化。T重载流操作符<<和>> 时,如果第一个参数的类型为ostream 和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。 T纯虚函数与函数体为空的虚函数等价。F作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。T运算符的重载形式有两种,重载为类的成员函数和重载为类的友元函数。(2.0分)T在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); F类内的常量数据成员必须用初始化列表来初始化数据成员。T多重继承往往产生二义性问题,可用成员名限定法来消除,这对成员变量、成员函数都适用。T基类成员的访问能力在派生类中维持不变。FC+语言中只能逐个引用数组元素而不能一次引用整个数组。(2.0分)T运行时的多态性可通过模板和虚函数实现。F 静态通过重载,动态通过虚函数和基类指针(引用)来实现。静态成员函数不能访问非静态的类成员(2.0分)T虚函数可以是static类型的函数。F设有函数说明 void f(const int&);则在调用该函数时,提供的参数既可以是变量,又可以是常量。F类内的public的成员函数能被外部访问,不能被类内部函数调用(2.0分)F抽象类不能用于创建对象。T抽象类可以用来直接创建对象。F类内的public成员函数不能访问类里的private数据成员(2.0分)F抽象类可以用来直接创建对象。(2.0分)F实参与形参值传递是双向的传递.(2.0分)FC+提供的顺序类型容器有向量(vector)、链表(list)、双端队列(deque)、集合(set)。F专心-专注-专业