C考试题库Word文件下载.docx
《C考试题库Word文件下载.docx》由会员分享,可在线阅读,更多相关《C考试题库Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
![C考试题库Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/12/f1c208f7-2683-4d56-b420-a8982d10e432/f1c208f7-2683-4d56-b420-a8982d10e4321.gif)
_______是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。
定义重载函数的下列要求中,________是错误的。
可以通过友元函数重载的运算符为________。
在下列运算符中,不能重载的是________。
下列运算符中,________运算符在C++语言中不能重载。
不能被重载的运算符1、.(成员访问运算符)2、.*(成员指针访问运算符)3、:
:
(域运算符)4、sizeof(长度运算符)5、?
(条件运算符)
下列运算符中,只能作为类成员函数重载的是________。
类MyA的拷贝初始化构造函数是________。
用cin为整型变量输入数据时,如果从键盘输入的不是数字,输入后整型变量中的结果会是:
________(2.0分)
在C++语言中,引用数组元素时,其数组下标的数据类型允许是________。
关于类模板描述不正确的是________。
下列说法不正确的是________。
建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为________的构造函数。
关于运算符重载,下列表述中正确的是________。
下列关于运算符重载不正确的是________。
在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。
下列叙述中正确的是________。
+和*都是二元运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中.当作为非成员函数重载时有两个参数。
以下叙述中正确的是________。
在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是________。
不能作为重载函数的调用的依据是________。
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是________。
在有参函数调用中,是将主调函数的实参值传给被调函数的形参。
按函数在程序中出现的位置来分,有以下三种函数调用形式:
①函数调用作为一条语句。
例如:
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分)
若i为整型变量,则以下循环执行次数是________。
for(i=2;
i==0;
)cout<
<
i--;
设"
char**s;
"
以下正确的表达式是________。
下列程序段的输出结果为________。
#include
voidmain(){chars[]="
123"
*p;
p=s;
cout<
*p++<
endl;
}(2.0分)
如果有如下语句charstr[20];
cin>
str;
cout<
执行时输入的是“thisisatestline!
”,则输出的内容是________。
cin流遇空白符号结束,因而只会读入第一个单词this,输出this
关于析构函数的特征,正确的是________。
析构函数没有数据类型,也没有参数,没有返回值,一个类只能有一个析构函数。
下列关于虚函数的说明中,正确的是________。
只能通过指针或引用调用虚函数
下列关于成员函数的描述中,正确的是________。
函数的形参是________。
在那种情况下不需要使用初始化列表________。
在C++语言中,char型数据在内存中的存储形式是________。
________不是构造函数的特征。
关于纯虚函数和抽象类的描述,错误的是________(2.0分)
如果在派生类中没有对纯虚函数进行了定义,那这个派生类也是抽象类.不能用来定义对象
下列对派生类的描述中,________是错误的。
关于关键字class和typename,下列表述正确的是________。
类A中一个成员函数说明如下:
voidSet(A&
a);
其中,A&
的含义是________。
关于this指针使用说法正确的是________。
下列函数中,不能重载运算符的函数是________。
下列关于运算符重载的叙述中,正确的是________。
当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中________。
拷贝构造函数的参数是________。
下列不是描述类的成员函数的是________。
设intx=1,y=1;
表达式(!
x||y--)的值是____1____。
执行语句inti=10;
i+++i++;
输出结果是________。
拷贝构造函数的参数通常是________。
以下叙述中不正确的是________。
A选项,这样的宏定义运行时未报错,在使用时,就将其看做什么也没有,例如,intx=5;
printf("
numberis%d"
BM_DEFx);
关于在调用模板函数时模板实参的使用,下列表述中正确的是________。
在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:
从模板实参表(用“<>”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。
如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。
如果模板实参表中的实参都被省略了,则空表“<>”也可以不要,因此选项D错误。
反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;
或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。
在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值________。
一个C++程序的执行是从________.(2.0分)
以下对C++语言函数的描述中,正确的是________。
下列关于友元函数描述,正确的是________。
友元函数________。
已知类A是类B的友元,类B是类C的友元,则________。
关于类模板,下列描述错误的是________。
在重载一个运算符时,如果其参数表中有一个参数,则该运算符是________。
一元成员运算符
重载一目运算符没有参数,重载二目运算符要有一个参数
已知在一个类体中包含如下函数原型:
VOLUMEoperator-(VOLUME)const;
下列关于这个函数的叙述中,错误的是________。
下列定义数组的语句中正确的是________。
所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是________。
下列函数模板的定义中,合法的是________。
C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是________。
C++语言中函数调用的方式有________。
x||y--)的值是________。
下面判断是否构成重载函数的条件中,错误的判断条件是________。
有如下类定义:
classXA{intx;
public:
XA(intn){x=n;
}};
classXB:
publicXA{inty;
XB(inta,intb);
};
在构造函数XB的下列定义中,正确的是________。
假设ClassY:
publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为________。
(构造从内到外,析构从外到内)
解决定义二义性问题的方法有________。
关于多继承二义性的描述,________是错误的。
设置虚函数的主要目的是________。
有如下函数模板定义:
template
Tfunc(Tx,Ty){returnx*x+y*y;
}在下列对func的调用中不正确的是________。
func<int>(3,5.5)
定义对象数组时必须有不需要参数的构造函数(2.0分)T
若有#defineS(a,b)a*b则语句area=S(3,2);
area的值为6.(2.0分)T
charch1[]="
student"
ch2[10];
ch2=ch1;
是错误的(2.0分)T
数组名是个名字,不可被赋值。
要想实现数组拷贝可以用memcpy
字符串拷贝还可以用strcpy
赋值兼容规则也适用于多继承的组合。
(2.0分)T
在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。
涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式.
定义类的非成员函数运算符重载,必须将它声明为友元函数。
(2.0分)F
构造函数和析构函数的返回类型为void(2.0分)F
(的名字与类的名字相同,并且不能指定)
构造函数实现类的类型转换,不适合将其它类型转换成类类型。
F
在说明一个结构变量后,不能整体引用结构体变量,需要逐一引用。
T
所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类外的函数对它们的访问都是非法的。
(2.0分)F(私有成员还可以被友元函数访问)
基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数。
子类可以新添自己的数据成员,但成员函数只能从父类继承。
子类可以新添自己的成员函数,但数据成员只能从父类继承。
C++中有五种作用域分别为文件作用域、块作用域、函数作用域、函数原型作用域和类作用域。
基类构造函数的调用顺序是由它们在派生类的构造函数实现中初始化表中出现的顺序决定的。
常量对象只能调用常量成员函数和静态成员函数,无法调用普通成员函数。
赋值运算符只能作为成员函数进行重载。
(因为编译器会提供一个默认的赋值运算符,你如果把自己定义赋值运算符的写成友元的话,函数的参数列表不一样,不会发生重载)
作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。
对于函数原型:
intfun(inta,intb=300,intc=200,intd=100);
可以使用如下方式调用:
fun();
常对象只能调用常成员函数。
包含空格的字符数组输入时,常常使用C++的cin.outline()函数实现。
派生类的虚函数与基类的虚函数需要有不同的形式参数。
派生类能过通过继承关键字改变对基类的函数成员的访问权限。
根据数据的组织形式,可以分为ASCII文件和文本文件两种。
F(应为ASCII文件和二进制文件)
对于内联函数,c++编译器执行内联扩展,将函数代码直接插入每一处调用处.由此可以减少函数调用的开销。
如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。
容器(container)是用来存储其他对象的对象,它是用模板技术实现的。
类的友元函数可以访问该类对象的所有成员。
类的构造函数可以有默认参数,但类内的普通成员函数不能有默认参数。
可以显式调用对象的构造函数。
在运算符重载中,operator是保留关键字,表示运算符函数T
友元函数访问对象中的成员可以不通过对象名。
友元函数是在类声明中由关键字friend修饰说明的类的成员函数。
进行宏定义时,宏名必须使用大写字母表示。
C++语言把文件看作是字符(字节)的序列,即由一个一个字符(字节)的数据按照随机顺序组成。
静态数据成员必须在类外定义和初始化。
重载流操作符<
和>
时,如果第一个参数的类型为ostream和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。
T
纯虚函数与函数体为空的虚函数等价。
运算符的重载形式有两种,重载为类的成员函数和重载为类的友元函数。
在同一个类中,可以定义重载的成员函数voidf(int);
和virtualvoidf(int);
F
类内的常量数据成员必须用初始化列表来初始化数据成员。
多重继承往往产生二义性问题,可用成员名限定法来消除,这对成员变量、成员函数都适用。
基类成员的访问能力在派生类中维持不变。
C++语言中只能逐个引用数组元素而不能一次引用整个数组。
运行时的多态性可通过模板和虚函数实现。
F静态通过重载,动态通过虚函数和基类指针(引用)来实现。
静态成员函数不能访问非静态的类成员(2.0分)T
虚函数可以是static类型的函数。
设有函数说明voidf(constint&
);
则在调用该函数时,提供的参数既可以是变量,又可以是常量。
类内的public的成员函数能被外部访问,不能被类内部函数调用(2.0分)F
抽象类不能用于创建对象。
抽象类可以用来直接创建对象。
类内的public成员函数不能访问类里的private数据成员(2.0分)F
实参与形参值传递是双向的传递.(2.0分)F
C++提供的顺序类型容器有向量(vector)、链表(list)、双端队列(deque)、集合(set)。