C++选择题第一部分1.关于类和对象不正确的说法是(c)A)类是一种类型,它封装了数据和操作B)对象是类的实例C)一个类的对象只有一个D)一个对象必属于某个类2.在类定义的外部,可以被访问的成员有(c)A)所有类成员B)private或protected的类成员C)public的类成员D)public或private的类成员3.关于this指针的说法错误的是(a)A)this指针必须显示说明B)当创建一个对象后,this指针就指向该对象C)成员函数拥有this指针D)静态成员函数不拥有this指针4.声明一个类的对象时,系统自动调用(b)函数,撤消对象时,系统自动调用(c)函数A)成员函数B)构造函数C)析构函数D)普通函数5.下面对构造函数的不正确描述是(b)A)系统可以提供默认的构造函数B)构造函数可以有参数,所以可以有返回值C)构造函数可以重载D)构造函数可以设置默认参数6.下面对析构函数的正确描述是(c)A)系统不能提供默认的析构函数B)析构函数必须由用户定义C)析构函数没有参数D)析构函数可以设置默认参数7.对静态成员的不正确描述是(c)A)静态成员不属于对象,是类的共享成员B)静态数据成员要在类外定义和初始化C)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D)非静态成员函数也可以操作静态数据成员8.下面选项中,不是类的成员函数为(c)A)构造函数B)析构函数C)友元函数D)缺省参数的构造函数方言9.下面对友元的错误描述是(D)A)关键字friend用于声明友元B)一个类的成员函数可以是另一个类的友元C)友元函数访问对象的成员不受访问特性影响D)友元函数通过this指针访问对象成员10.在C++中,类与类之间的继承关系具有(C)A)自反性B)对称性C)传递性D)反对称性11.下列关于类的继承描述中,(A)是错误的A)派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B)派生类也是基类,但基类不一定具有派生类的全部属性和方法C)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D)一个基类可以有多个派生类,一个派生类可以有多个基类12.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的(A)A)public成员B)private成员C)protected成员D)友元13.当一个派生类私有继承一个基类时,基类中的所有仅有成员和保护成员成为派生类的(B)A)public成员B)private成员C)protected成员D)友元14.不论派生类以何种方法继承基类,都不能使用基类的(B)A)public成员B)private成员C)protected成员D)public成员和protected成员15.下面描述中,错误的是(BC)(两个答案)A)在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问B)在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C)在基类定义的public和protected成员在保护继承的派生类中不可见D)在派生类中不可见的成员要变成可访问的,需要进行访问声明16.在C++中,不能被派生类继承的函数是(BC)(两个答案)A)成员函数B)构造函数C)析构函数D)静态成员函数17.在创建派生类对象时,构造函数的执行顺序是(D)A)对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数18.当不同的类具有相同的间接基类时,有特点(Ad)(两个答案)A)各派生类对象将按继承路线产生自己的基类版本B)派生类对象无法产生自己的基类版本C)为了建立惟一的间接基类版本,在基类定义前加virtual即可D)为了建立惟一的间接基类版本,应该声明虚继承19.在C++中,要实现动态联编,必须使用(D)调用虚函数A)类名B)派生类指针C)对象名D)基类指针20.下列函数中,可以作为虚函数的是(CD)(两个答案)A)普通函数B)构造函数C)成员函数D)析构函数21.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(C)A)不同B)相同C)相容D)部分相同22.下面函数原型声明中,(C)声明了fun为虚函数A)voidfun()=0;B)virtualvoidfun()=0;C)virtualvoidfun();D)virtualvoidfun(){};23.若一个类中含有纯虚函数,则该类称为(D)A)基类B)纯基类C)派生类D)抽象类24.假设A为抽象类,下列声明(B)是正确的A)Afun(int);B)A*p;C)intfun(A);D)AObj;25.下面描述中,正确的是(BD)(两个答案)A)虚函数是没有实现的函数B)纯虚函数的实现在派生类中C)抽象类是没有纯虚函数的类D)抽象类指针可以指向不同的派生类26.关于函数模板,描述错误的是(C)A)函数模板必须由程序员实例化为可执行的函数模板B)函数模板的实例化由编译器实现C)一个类定义中,只要有一个函数模板,则这个类是类模板D)类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化27.下列的模板说明中,正确提(AC)(两个答案)A)templatetypenameT1,typenameT2B)templateclassT1,T2C)templateclassT1,classT2D)templatetypenameT1;typenameT228.假设有函数模板定义如下:TemplatetypenameTMax(Ta,Tb,T&c){c=a+b;}下列选项正确的是(AB)(两个答案)A)floatx,y;floatz;Max(x,y,z);B)intx,y,z;Max(x,y,z);C)intx,y;floatz;Max(x,y,z);D)floatx;inty,z;Max(x,y,z);29.关于类模板,描述错误的是(D)A)一个普通基类不能派生类模板B)类模板从普通类派生,也可以从类模板派生C)根据建立对象时的实际数据类型,编译器把类模板实例化为模板类D)函数的类模板参数须通过构造函数实例化30.建立类模板对象的实例化过程为(C)A)基类à派生类B)构造函数à对象C)模板类à对象D)模板类à模板函数第二部分1类的说明,请指出错误的地方()。ClassCsample{inta=2.5;(A)Csample();(B)public:Csample(intval);(C)~Csample();(D)};2.在C++中,可以把具有相同内部存储结构和相同操作的对象看成属于同一类,在指定一个类后,往往把属于这个类的对象称为类的()。从语言角度来说,类是一种数据类型,而()是具有这种类型的变量。A.实例B实物C特征D对象3.有关类的说法不正确的是()A.类是一种用户自定义的类据类型B只有类中的成员函数才能存取类中的私有类型C.在类中如果不作特别说明所有的数据均为私有类型D在类中如果不作特别说明所有的成员函数均为公有类型4.有关类和对象的说法下列不正确的有()。A.对象是类的一个实例B任何一个对象只能属于一个具体的类C.一个类只能有一个对象D类与对象的关系和数据类型和变量的关系相5.有关构造函数的说法不正确是()A.构造函数名字和类的名字一样B构造函数在说明类变量时自动执行C.构造函数无任何函数类型D构造函数有且只有一个6.有关析构函数的说法不正确的是()。A.析构函数无任何函数类型B析构函数有且只有一个C析构函数和构造函数一样可以有形参D.析构函数的作用是在对象被撤消时收回先前分配的内存空间7.在类的定义体外定义成员函数时,需要在函数名前加上(),而在域外使用成员函数时,需要在成员名外加上()的名字。A.类标记B类域标记C类对象D域运算符8.若函数是在运行时被激活的,则该函数称为()A.内联函数B非内联函数C成员函数D静态成员函数9.在类的定义形式中,数据成员、成员函数和()组成了类定义体。A.成员的访问控制信息B公有消息C私有消息D保护消息10()的功能是对对象进行初始化。A.析构函数B数据成员C构造函数库D静态成员函数11.()只能访问静态成员变量,静态成员函数和类以外的函数和数据不能访问类中的非静态成员变量。A.静态函数B虚函数C构造函数D静态成员函数12.若Queue是类,aQueue是它的一个对象,P1是类对象aQueue的一个指针,那么类对象aQueue可以通过()来访问类的成员,类对象aQueue的指针P1可以通过()来访问类的成员。A.::B.C;D-13.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用()提供对全局变量的访问。A域运算符B类运算符C重载D引用14.在下列关键字中,用以说明类中公有成员的是()。A.publicBprivateCprotectedDfriend15下列的各类函数中,()不是类的成员函数。A.构造函数B析构函数C友元函数D拷贝初始化构造函数16.()不是构造函数的特征A.构造函数的函数名与类名相同B构造函数可以重载C.构造函数可以设置默认参数D构造函数必须指定类型说明17()是析构函数的特征。A.一个类中只能定义一个析构函数B析构函数名与类名不同C.析构函数的定义只能在类体内D析构函数可以有一个或多个参数18.通常拷贝初始化构造函数的参数是()A.某个对象名B某个对象的成员名C某个对象的引用名D某个对象的指针名19.关于成员函数特征的下述描述中,()是错误的。A.成员函数一定是内联函数B成员函数可以重载C成员函数可以设置参数的默认值D成员函数可以是静态的20.下述静态数据成员的特性中,()是错误的。A.说明静态数据成员时前边要加修饰符staticB静态数据成员要在类体外进行初始化B.引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符A.态数据成员不是所有对象所共有的21.友元的作用()。A.提高程序的运行效率B加强类的封装性C实现数据的隐藏性D增加成员函数的种类22.类模板的使用实际上是将类模板实例化成一个具体的()A.类B对象C函数D模板类23.一个()允许用户为类定义一个模式,使得类中的某些数据成员及某些成员函数的的返回值能取任意类型。A函数模板B模板函数C类模板D类模板24.模板是实现类属机制的一种工具,其功能非常强大,它既允许用户构造函数类属函数即();也允许用户构造函数类属类,即()。25.C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过(),派生出新的类。A.复用B继承C单继承D多继承26.继承具有(),即当基类本身也是某一个的派生类时,底层的派生类也会自动继承间接基类的成员。A规律性B传递性C重复性D多样性27.若类A和类B的定义如下:classA{intI,j;public:voidget();//..};classB:A{intk;public:voidmake(){k=I*j;}则上述定义中,()是非法的表达式。Avoidget();Bintk;Cvoidmake();Dk=I*j;28.在派生类中定义的析构函数与它所属的基类()A一定有关B一定无关C以上都不对29.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则(),A完全相同B完全不同C部分相同,部分不同D以上都不对30.在多继承的构造函数定义中,几个基类的构造函数之间用()分隔。A:B;C,D::31.派生可以分()和()。由()得到的派生类,其基类的所有公有成员都只能成为它的私有成员,这些私有成员只能被派生类的成员函数访问,而()无权访问,()的意义是基类中所有公有成员在派生类中也都是公有的。A公有派生B派生类的使用者C私有派生D派生类的构造函数32.基类的()不能为派生类的成员访问,基类