您好,欢迎访问三七文档
一、选择题1、虚函数必须是类的A。A成员函数B友元函数C静态函数D析构函数2、下列关于虚函数的表述中正确的是B。A只有用virtual修饰的成员函数才是虚函数。B派生类中覆盖虚的重定义函数仍然是虚函数。C对虚函数的调用都是动态绑定的。D使用虚函数主要是为了提高运行效率。3、下列关于抽象类的表述中正确的是C。A没有函数成员的类称为抽象类。B含有虚函数成员的类称为抽象类。C含有纯虚函数成员的类称为抽象类。D用abstract修饰的类称为抽象类。4、若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是哪一种D。AexternBregisterCautoDstatic5、关于静态数据成员的特性,下列哪一个说法是错误的A。A静态数据成员不是所有对象所共有的。B静态数据成员在类体外进行初始化。C声明静态数据成员时要在变量名前加关键字static来修饰。D引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符。6、下列关于常成员的说法不正确的是哪一个B。A常数据成员必须进行初始化,并且不能被更新。B常数据成员可以在定义时直接初始化。C常成员函数可以被非常对象调用。D常数据成员通过构造函数的成员初始化列表进行初始化。7、对于const关键字修饰对象的说法,下列哪一个说法是正确的C。A不能用一般的成员函数来访问B可以用一般的成员函数来访问C可以访问const成员函数D不能访问const成员函数8、在任何继承方式下,派生类的自有成员函数都能够访问原基类的某些成员,这些成员的原访问属性必然是A。A公有或保护B私有或继承的私有C保护或私有继承的私有或公有9、基类中的某些成员在派生类中的访问属性与派生方式无关,这些成员必然是原基类中的B。A公有成员B私有成员C保护成员D继承的私有成员10、以下关于预处理的说法,错误的是B。A预处理在编译前进行B预处理指令需要分号结尾C每条预处理指令必须单独占用一行D预处理指令可以出现在程序的任何位置11、假设名字空间A中有函数voidf(),且名字空间A被嵌套在名字空间B中,则以下哪一项实现了对函数f()的访问D。AA.B.f();BB.A.f();CA::B::f();DB::A::f();12、以下哪一项不在标准C++库中A。A微软基础类(MFC)B容器类与抽象容器类(ADT)C存储管理类D错误管理13、关于运算符重载,下列表述正确的是C。A可以针对基本类型的数据,重新定义“*”的含义B通过运算符重载可以改变运算符的操作数个数C只能重载C++中已有的运算符DC++中所有的运算符都可以重载14、在下列运算符中,只能作为二元运算符重载的是D。A+B-C*D/15、在intb[][3]={{1},{2,3},{4,5,6},{2}}中,b[2][2]的值是C。A0B3C6D216、下面关于指针的运算中,非法的是D。A两个指针在指定的条件下,可以进行相等的或者不等的运算。B可以将一个空指针赋值给某指针。C一个指针可以加上两个整数之差。D两个指针在一定条件下可以相加。17、语句int*p=&k;定义了指针p,与这个语句等效的语句序列是A。Aint*p;p=&k;Bint*p;p=k;Cint*p;*p=&k;Dint*p;*p=k;18、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是A。Aintvect[]={30,50,-88};Bintvect[]={30,50,-88,0,0};Cintvect[5]={30,50,-88};Dintvect[5]={30,50,-88,0,0};19、下列十六进制整型常量的写法中,错误的是B。A0xafB0C0X1bD0xAE20、判断字符型变量ch是否为小写字母,应该使用表达式D。Ach=’a’&ch=’z’Bch=’a’||ch=’z’C‘a’=ch=’z’Dch=’a’&&ch=’z’21、在C++中,实现封装性需借助于B。A枚举B类C数组D函数22、下列字符串中,正确的C++标识符是D。Afoo-1B2bCnewD_25623、下列符号中可以用作C++标识符的是A。A_radiusBfoo~barCelseD3room24、以下不是C++关键字的是D。AnewBcharCtryDget25、设有如下类的定义:classSample{ints;public:voidsetdata(intm);};如果在类体外定义成员函数setdata(),则以下形式定义正确的是(B)。A.voidSample::setdata(){……}B.voidSample::setdata(intm){……}C.voidsetdata(intm){…...}D.Sample::voidsetdata(intm){……}26、在C++中,实现封装性需借助于(B)。A枚举B类C数组D函数27、C++程序的执行总是从哪里开始的(B)。A第一行Bmain()函数C头文件D注释28、关于C++与C语言关系的描述中,(D)是错误的。AC语言是C++语言的一个子集BC语言与C++语言是兼容的CC++语言对C语言进行了一些改进DC++语言和C语言都是面向对象的29、下列数组声明中,错误的是(C)。Ainta[]={1,2,3,4}Bfloata[3]={0,0,0}Cinta[2]={4,6.3}Dfloata[3]={0,2.3}二、填空题1、含有纯虚函数的类称为。抽象类2、已知一个类有一成员函数,其原型是:Nameexecute(int,constchar*)const;现准备将之改为纯虚函数,其原型应改为。Nameexecute(int,constchar*)const=0;3、实现编译时的多态性的机制称为,实现运行时的多态性的机制称为。静态绑定(或静态联编);动态绑定(或动态联编)4、在C++中,编译时的多态性是通过和模板体现的,运行时的多态性是通过体现的。函数重载;虚函数5、在用class定义派生类时,默认的继承方式是。私有继承6、如果类Alpha继承了类Beta,则类Alpha称为类,类Beta称为类。派生(或子);基(或父)7、有如下程序段:inta;int&b=a;a=3;b=a+1;则a=,b=。4;48、执行语句序列:inti=0;while(i20)i+=3;couti;输出的结果是。219、C++中只有两个逻辑常量:true和。false10、若有定义语句:inta=3,b=2,c=1;,则表达式ab?a:b的值是。311、C++语言的多态性依赖于和的概念。虚函数;抽象类12、类的成员的访问权限有、和三种。公有(public);私有(private);受保护(protected)13、构造函数是被创建时自动执行,对象消失时自动执行的成员函数称为。对象;析构函数14、C++源程序文件的扩展名为,C++头文件的扩展名为。cpp;h15、在C++中,用数组、指针和作为函数参数,能够将参数值带回。引用16、在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为,定义该类至少具有一个。抽象类;纯虚函数17、在C++中,一个派生类可以从一个基类派生称为;也可以从多个基类派生,称为。无论按哪种方式继承,基类的成员在派生类中始终是不可访问的。单继承;多重继承;私有18、在C++中,为对象申请空间时用,而撤消对象时释放内存空间则用。new;delete19、运算符重载函数的关键字是,它和运算符一起组成该运算符函数的函数名。operator20、面向对象程序设计的四个基本特征是:、、和。抽象;封装;继承;多态21、声明类用关键字,声明类的静态成员用关键字,声明类的友元函数用关键字。class;static;friend22、在C++语言中,访问一个对象的成员所用的运算符是,访问一个指针所指向的对象的成员所用的运算符是。.-23、请写出与数学表达式5/9(F-32)相对应的C++表达式。5.0/9*(F-32)三、判断题(F)1、C++的源程序可以直接在计算机上运行。(T)2、类中所提供的成员函数可以直接访问私有成员。(F)3、字符串是用单引号括起来的若干字符。(T)4、在任何继承方式下,派生类的自有成员函数都不能够访问原基类的某些成员,这些成员的原访问属性必然是私有或继承的私有。(F)5、静态成员变量每个对象都有一份拷贝。(F)6、静态变量和外部变量一样,可以为多个源文件所共享。(T)7、运算符重载实质上是函数的重载。(T)8、说明或定义对象时,类名前不需加class关键字。(F)9、对于用const关键字修饰的对象,可以访问一般的成员函数。(T)10、公有继承时,基类的受保护成员可以被派生类的成员函数访问。(F)11、抽象类不能定义对象,也不能定义指向抽象类数据的指针变量。(F)12、重载一个二元运算符为成员函数时,函数的参数个数必须为两个。(F)13、ab*c是一个合法的C++标识符。(T)14、类的重用就是利用已有的类来构建新的类。(T)15、外部变量可以用extern在多处声明,但是对变量的定义和初始化只能是唯一的。(T)16、说明或定义对象时,类名前不需加class关键字。(F)17、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(F)18、发生函数调用时,只能把实参的值传递给形参。(T)19、类的构造函数的作用就是在对象被创建时利用特定的值初始化对象。(T)20、在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,此时,继承下来的虚函数仍然保持其在基类中的定义。(F)21、类A是类B的友元,则类B一定是类A的友元。(T)22、子类可以改造从父类继承的成员。(F)23、运算符重载就是赋予尚未有的运算符多种运算的功能。(F)24、有时需要使几个不同类型的变量共用同一组内在单元,这时可以定义一个结构体类型。(F)25、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。(T)26、字符串是用双引号括起来的一个或多个字符。(F)27、抽象类不可以继承,只能派生。(T)28、使用new申请的内存,在程序执行结束时,必须使用delete释放。(T)29、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。(T)30、多态的实现分为两类:编译时的多态和运行时的多态。四、分析程序,写出程序运行结果。1.#includeiostream.hclassBase{public:virtualvoidfn(){coutInBaseClassendl;}};classSubClass:publicBase{public:virtualvoidfn(){coutInSubClassendl;}};voidmain(){Basebc,*p;SubClasssc;p=&bc;p-fn();p=≻p-fn();}结果:InBaseClassInSubClass2.#includeiostream.hclassONE{public:virtualvoidf(){coutlendl;}};classTWO:publicONE{public:TWO(){cout2endl;}};classTHREE:publicTWO{public:virtualvoidf(){TWO::f();cout3;}};voidmain(){ONEaa,*p;TWObb;THREEcc;p=&cc;p-f();}结果:22133.#includeiostream.hclassA{inta;public:A(intaa=0){a=aa;}~A(){cout“DestructorA!”aendl;}};classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}~B(){cout“DestructorB!”
本文标题:C++复习题
链接地址:https://www.777doc.com/doc-4948309 .html