C++选择题集1.下列的各类函数中,不是类的成员函数。(C)A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数2.作用域运算符“::”的功能是:(B)A)标识作用域的级别的B)指出作用域的范围的C)给定作用域的大小的D)标识成员是属于哪个类的3.下列说明中constchar*ptr;其中ptr应该是:(C)A)指向字符常量的指针B)指向字符的常量指针C)指向字符串常量的指针D)指向字符串的常量指针4.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。(A)A)voidprint()const;B)constvoidprint();C)voidconstprint():D)voidprint(const);5.在类定义的外部,可以被访问的成员有(C)A)所有类成员B)private的类成员C)public的类成员D)public或private的类成员6.要求打开文件d:\file.dat,可写入数据,正确的语句是:(B)ifstreaminfile(d:\file.dat,ios::in);ifstreaminfile(d:\\file.dat,ios::in);ofstreaminfile(d:\file.dat,ios::out);fstreaminfile(d:\\file.dat,ios::in|ios::out);7.关于类和对象不正确的说法是:(C)A)类是一种类型,它封装了数据和操作B)对象是类的实例C)一个类的对象只有一个D)一个对象必属于某个类8.在C++中,类与类之间的继承关系具有(C)A)自反性B)对称性C)传递性D)反对称性9.结构化程序设计所规定的三种结基本控制构是:(C)A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数10.C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是:(B)A)面向过程B)面向对象C)安全性D)复用性11.在C++中实现封装是借助于(B)A)枚举B)类C)数组D)函数12.C++语言是从早期的C语言逐渐发展演变而来的与C语言相比,它在求解问题方法上进行的最大改进是:(B)A)面向过程B)面向对象C)安全性D)复用性13.在C++中用(D)能够实现将参数值带回。a)数组b)指针c)引用d)上述ABC都可14.考虑函数原型voidtest(inta,intb=7,charch=*),下面的函数调用中,属于不合法调用的是:(C)A)test(5)B)test(5,8)C)test(6,#)D)test(0,0,*);15.下列关于类和对象的叙述中,错误的是:(A)A)一个类只能有一个对象;B)对象是类的具体实例;C)类是对某一类对象的抽象;D)类和对象的关系是一种数据类型与变量的关系。16.已知:intm=10;下列表示引用的方法中,正确的是:(C)A)int&Z;B)int&t=10;C)int&X=m;D)float&f=&m;17.对于int*pa[5];的描述中,正确的是:(D)A)pa是一个指向数组的指针,所指向的数组是5个int型元素B)pa是一个指向某数组中第5个元素的指针,该元素是int型变量C)pa[5]表示数组的第5个元素的值,是int型的值D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针18.定义析构函数时,应该注意:(C)A)其名与类名完全相同B)返回类型是void类型C)无形参,也不可重载D)函数体中必须有delete语句19.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(B)A)受限制B)保持不变C)受保护D)不受保护20.下列不是函数重载所要求的条件是:(D)A)函数名相同B)参数个数不同C)参数类型不同D)函数返回值类型不同21.在C++中执行以下4条语句后输出rad值为:(C)staticinthot=200;int&rad=hot;hot=hot+100;coutradendl;A)0B)100C)300D)20022.类claseCC1的说明如下,错误的语句是:(A)claseCC1{inta=2;//(A)CC1();//(B)public:CC1(intval);//(C)~CC1();//(D)};23.下列各类函数中,不是类的成员函数是:(C)A)构造函数B)析构函数C)友元函数D)拷贝构造函数24.类的指针成员的初始化是通过函数完成的,这个函数通常是:(C)A)析构函数B)构造函数C)其它成员函数D)友元函数25.关于构造函数的说法,不正确的是:(A)A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同C)它在对象被创建时由系统自动调用D)没有返回值26.按解释中的要求在下列程序划线处填入的正确语句是:(C)#includeiostream.hclassBase{public:voidfun(){coutBase::funendl;}};classDerived:publicBase{public:voidfun(){//在此空格处调用基类的函数fun()coutDerived::funendl;}};A)fun();B)Base.fun();C)Base::fun();D)Base-fun();27.在C++中编译器所生成的文件的扩展名为(B)A).cppB).objC).libD).exe28.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(C)A)受限制B)保持不变C)受保护D)不受保护29.有如下一段程序:intf1(float);intf2(char);intf3(float);intf4(float);int(*pf)(float);则以下不合法的是:(C)A)int(*p)(float)=&f1;B)pf=&f4;C)pf=&f2;D)pf=&f3;30.通常拷贝构造函数的参数是:(C)A)对象名B)对象的成员名C)对象的引用名D)对象的指针名31.系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:(D)A)参数个数B)参数类型C)函数名称D)函数的返回值类型32.下列描述中,正确的是:(D)A)所有的运算符号都可以重载。不能重载的运算符只有4个,作用域运算符:'::',成员解引用运算符:'.*',成员访问运算符:'.',条件运算符:'?:'B)基类类型的指针可以指向子类,子类类型的指针也可以指向基类。C)可以在类的构造函数中对静态数据成员进行初始化。D)动态联编要满足两个条件:被调用的成员函数是虚函数;用指针或引用调用虚函数。33.关于成员函数特征的描述中,错误的是:(A)A)成员函数一定是内联函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的34.下列关于构造函数的描述中,错误的是:(D)A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C)构造函数可以是内联函数;D)构造函数不可以重载35.下面描述中,表达错误的是:(B)A)公有继承时,基类中的public成员在派生类中仍是public的B)公有继承时,基类中的private成员在派生类中仍是private的C)公有继承时,基类中的protected成员在派生类中仍是protected的D)私有继承时,基类中的public成员在派生类中是private的36.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,C++在求解问题方法上进行的最大改进是:(B)A)面向过程B)面向对象C)安全性D)复用性37.有如下类声明“classA{intx;……};”,则A类的成员x是:(B)A)公有数据成员B)私有数据成员C)公有成员函数D)私有成员函数38.有如下程序:执行后的输出结果应该是:(A)#includeiostream.hclasscla{staticintn;public:cla(){n++;}~cla(){n--;}staticintget_n(){returnn;}};intcla::n=0;intmain(){cla*p=newcla;deletep;coutn=cla::get_n()endl;return0;}A)n=0B)n=1C)n=3D)n=439.有如下程序:执行后的输出结果应该是:(A)#includeiostream.hclassA{public:A(){coutA;}};classC:publicA{public:C(){coutC;}};voidmain(){Ccobj;}A)ACB)CAC)AD)C40.有如下程序:执行后的输出结果应该是:(D)#includeiostream.hclassBASE{public:~BASE(){coutBASE;}};classDERIVED:publicBASE{public:~DERIVED(){coutDERIVED;}};voidmain(){DERIVEDx;}A)BASEB)DERIVEDC)BASEDERIVEDD)DERIVEDBASE41.类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:(C)A)TM*aB)TN&aC)TMaD)TNa;42.通过下述哪一项调用虚函数时,采用动态联编。(A)A)对象指针B)对象名C)成员名限定D)派生类名43.在下述哪种情况下适宜采用inline定义内联函数。(C)A)函数体含有循环语句B)函数体含有递归语句C)函数代码少、频繁调用D)函数体含有switch语句44.创建动态对象,需要使用操作符(A)A)newB)deleteC).D)*45.删除动态对象,需要使用操作符(B)A)newB)deleteC).D)*46.在C++中不能被重载的一组运算符是:(A)A)::?:.sizeofB)?:.sizeof++-C)::?:newdeleteD)++--?:sizeof47.如果类A被说明成类B的友元,则(C)A)类A的成员即是类B的成员B)类B的成员即是类A的成员C)类A的成员函数可以访问类B的所有成员D)类B的成员函数可以访问类A的所有成员48.下面关于友元的描述中,错误的是:(D)A)友元函数可以直接访问该类的私有成员。B)一个类的友元类中的所有成员函数都是这个类的友元函数。C)利用友元可以提高程序的运行效率,但却破坏了封装性。D)友元关系不能被继承,是双向可交换的。49.下列虚基类的声明中,正确的是:(B)A)classvirtualB:publicAB)classB:virtualpublicAC)classB:publicAvirtualD)virtualclassB:publicA50.C++设置虚基类的目的是(A)A)消除二义性B)简化程序C)提高运行效率D)减少目标代码51.有如下模板定义:templateclassTTfun(Tx,Ty){returnx*x+y*y;}在下列对fun的调用中,错误的是:(C)A)fun(2,8)B)fun(2.0,8.2)C)fun(2.3,8)D)funfloat(2,8.3)52.通常情况下,函数模板中的类型参数个数不能是(A)A)0个B)1个C)2个D)3个53.以下关于this指针的叙述中正确的是:(D)A)任何与类相关的函数都有this指针;B)类的成员函数都有this指针;C)类的友员函数都有this指针;D)类的非静态成员函数才有this指针;54.当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数(A)A)都是虚函数B)只有被重新说明时才是虚函数C)都不是虚函数D)只有被重新说明为virtual时才是虚函数55.在派生类中重新定义虚函数时,必须在下列哪方面与基类保持一致。(A)A)参数类型B)参数名字C)操作内容D)赋值56.关于const关键字说法错误的是(D)A)const关键字可以