题目
由于数据隐藏的需要,静态,数据成员通常被说明为( )A)私有的B)公有的C)保护的D)不可访问的52.假定X为一个类,则该类的拷贝构造函数[1]的声明语句为( )A)My Class(My Class x)B)My Class&(My Class x)C)My Class(My Class &x)D)My Class(My Class *x)53.Main()函数在执行之前不可以调用其构造函数的( )A)全局对象B)静态对象C)在main()函数体内说明的对象D)全局对象数组54.对于常成员函数,下列描述正确的是( )A)常成员函数只能修改常数据成员B)常成员函数只能修改一般数据成员C)常成员函数不能修改任何数据成员D)_成员函数只能通过常对象调用55.友元[2]的作用是( )A)提高程序是运行效率B)加强类的封装性C)实现数据的隐藏性D)增加成员函数的种类56.一个类的友元函数或友元类能够通过成员操作符访问该类的( )A)私有成员B)公有成员C)保护成员D)公有成员、保护成员和私有成员57.下面说法中正确的是( )A)当声明的内容不同时,声明同一个名字的两个类是允许的B)不完全生命的类也可以实例化C)声明同一个名字的两个类时,要求声明的内容也相同D)生命同一个名字的两个类是错误的58.下面对静态数据成员的描述中,正确的是( )A)静态数据成员是类的所有对象共享的数据B)类的没个对象都有自己的静态数据成员C)类的不同对象有不同的静态数据成员值D)静态数据成员不能通过类的对象调用59.下列关于对象数组的描述中,错误的是( )A)对象数组的下标是从0开始的B)对象数组的数组名是一个常量[3]指针C)对象数组的没个元素是同一个类的对象D)对象数组只能赋初值,而不能在定义后赋值60.对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( )class A(public:A(int x){n=x;)coid SetNum(int n1)(n=n1;)privateint n;}int f()}a*ptr=new A(60);}A)A(60)B)SetNum(60)C)Ptr->SetNum(60)D)Ptr->n=6061.关于使用const关键字修饰的对象的说法正确的是( )A)不能用一般的成员函数来访问B)可以用一般的成员函数来访问C)可以访问const成员函数及colatile成员函数D)不能访问const成员函数62.下面是类MyClass的定义,对定义中各语句描述正确的是( )class MyClass (private: int X,y,Z;public;coid MyClass(int a){X=a;) ________________int f(int a,int b) ________________(X=a;Y=b;)Int f(int a,int b,int c=0) ________________(a;Y=b;Z=c;)Static coid g() (X=10;) ________________A)语句①是类MyClass的构造函数定义B)语句②和语句③实现类成员函数的重载C)语句④实现对类成员变量X的更新操作D)语句①②③和④都不正确63.友元访问类的对象的成员时使用( )A)类的成员名B)this指针指向成员名C)“类名::成员名”的形式D)“对象名.成员名”的形式64.下列程序输出的结果正确的是( )#i ncludecoid fun()(static int n=10;n++;cout *p”来访问类A的对象a的数据成员,则下面正确的是( )A)px是指向类数据成员的指针B)p是指向类数据成员的指针C)p是指向类的对象的指针D)无法确定指针类型69.关于类中数据成员的生存期的说法正确的是( )A)与对象的生存期无关B)比对象的生存期长C)比对象的生存期短D)有对象的生存期决定70.类example的析构函数[4]为( )A)example();B)example()C)~example();D)~example()71.以知AA是一个类,则执行语句Aaa;后( )A)自动调用无参构造函数B)自动调用有参构造函数C)自动调用拷贝构造函数D)产生一个对象a,但不调用任何函数72.对于类模板tanytemp,执行语句tanytempiobject(23,32);后 ( )A)产生的模板类为tanytempB)产生的模板类为iobjectC)产生的模板类为tanytempD)类模板实例化对象73.下列说法正确的是( )A)类定义中只能说明函数成员的函数头,不能定义函数体B)类中的函数成员只能可以在类体内定义,不可能在类体外定义C)类中的函数成员在类体外定义时必须要与类声明在同一文件中D)在类体外定义的函数成员不能操作该类的私有数据成员74.类的构造函数被自动调用执行的情况是在定义该类的( )A) 成员函数时B) 数据成员时C) 对象时D) 友元函数时75.说明友元函数使用关键字( )A) friendB) staticC) constD) colatile76.有关类的作用域[5].下了说法中不正确的是( )A) 说明类时所使用的一对花括号形成所谓的类作用域B) 类作用域不包含类汇总成员函数的作用域C) 类作用域中说明的标识符[6]只在类中可见D)在可能出现两义性的情况下,必须使用作用域限定符”::”78.允许访问类的所有对象的私有成员,公有成员和保护成员的是( )A) 友元函数B) 成员函数C) 内联[7]函数D) 重载函数79.形如X::X(X&)的构造函数称为( )A) 拷贝函数B)复制函数C)初始化函数D) 拷贝初始化构造函数80.以知example是已定义的类,则程序结束前,共存在( )个对象.#i ncludemain()(example x(5); example arr[2]={1,2);x=10;x.print();x=example(15);x.print();}A) 3B) 4C) 7D) 881.所有在函数中定义的变量,连同形式参数[8],都属于( )A) 全局变量[9]B) 局部变量[10]C) 静态变量D) 寄存器[11]变量82.在C++中,封状是借助于( )达到的.A) 结构B) 类C) 数组D) 函数83.下面不属于类的存取权限的是( )A) publicB) staticC) protectedD) pricate84.指向类X中类型为type的数据成员的指针的说明形式为( )A) type X::*pointerB) x::type*pointerC) type *X::pointerD) X::*tyoe pointer85.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的A) coid print() constB) const coid print()C) viod const print()D) coid print(const)86.关于new运算符的下列描述中,( )是错误的.A) 它可以用来动态创建对象和对象数组B) 使用它创建对象或对象数组,可以使用运算符DELETE删除C) 使用它创建对象时要调用构造函数D) 使用它调用对象数组时不E) 许指F) 定初始值87.下列关于构造函数的描述中,错误的是( )A) 构造函数可以设置默认参数B) 构造函数在说明类变量时自动执行C) 构造函数可以对静态数据成员进行初始化D) 够找函数可以重载88.对于类A,语句VOID(A::*P)(VOID);表明( )A) P是一个指B) 向类成员函数的指C) 针D) P是类A的一个成员E) P是类A的一个对象F) P是一个指G) 向类对象的指H) 针89.运算符delete删除一个动态对象时( )A) 首先为该动态对象调用构造函数,在释放其占用的内存B) 首先释放该动态对象占用的内存,在为其调用构造函数C) 首先为该动态对象调用析构函数,在释放其占用的内存D) 首先释放动态对象占用的内存,在为其调用析构函数第四、五章习题一选择题1. 在C++中的类有两种方法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过______________, 派生出新的类。A) 复用C) 继承D) 单继承[12]E) 多继承[13]5. 下面关于纯虚函数和抽象类[14]的描述中,__________是错误的。A) 纯虚函数是一种特殊的虚函数,它没有具体意义B) 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类C) 抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出D) 抽象类是指具有纯虚函数的类7. 继承具有__________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。A) 规律性B) 传递性C) 重复性E) 多样性10. 对虚函数的调用_________。A) 一定使用动态联编B) 一定使用静态联编C) 必须使用动态联编D) 不一定使用动态联编11. 若类A和类B的定义如下:class A( int i,j; public:void get();________________);class B:A/默认为私有派生(int k; public;void make();________________);void B:: make()( k=i*j;)则上述定义中,__________是非法的表达式。A)void get();B)int k;D)void make();D)k=i*j;6.下列描述中,__________是抽象类的特性。A)可以说明虚函数B)可以定义友元函数C)可以进行构造函数重载D)不能说明其对象7.在多继承中,公有私生和私有派生对于基类成员的派生类中的可访问性与单继承的规则__________。A)完全相同B)完全不同C)部分相同,部分不同D)以上都不对8.__________是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。A)纯虚函数B)虚析构函数C)虚构造函数D)静态成员函数9.下列对派生类的描述中,__________是错误的。A)一个派生类可以作另一个派生类的基类B)派生类至少有一个基类C)派生类的成员除了它自己的成员外,包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类保持不变10.实现运行时的多态性[15]要使用__________。A)构造函数B)析构函数C)重载函数D)虚函数11.派生类的对象对它的基类成员中_________是可以访问的。A)公有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)私有继承的公有成员12.关于函数的描述中,_________是正确的。A)派生类的虚函数与基类的虚函数具有不同的参数个数和类型B)基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数C)虚函数是一个成员函数D)虚函数是一个static类型的成员函数、13.对基类和派生类的关系描述中,__________是错误的。A)派生类是基类的具体化B)派生类是基类的子集C)派生类是基类定义的延续D)派生类是基类的组合14.关于动态联编的下列叙述中,__________是错误的。A)动态联编是以虚函数为基础的B)动态联编调用虚函数操作是指向对象的指针或引用C)动态联编是在运行时确定所调用的函数代码的D)动态联编是在编译时[16]确定操作函数的15.派生类的构造函数的成员初始化列表中,不能包含__________。A)基类的构造函数B)派生类中子对象的初始化C)基类的子对象初始化D)派生类中一般数据成员的初始化16.如果一个类至少有一个纯虚函数,那么就称该类为__________。A)抽象类B)派生类C)纯基类D)以上都不对17.设置虚基类的目的是__________。A)简化程序B)消除二义性C)提高运行效率D)减少目标代码[17]18.在下面程序中,编译时出现的错误是_________。class A ________1)( public; ________2) A() { func(); ________3) ) virtual void func()=0; ________4)};A)(1)B)(2)C)(3)D)(4)19.关于多继承二义性的描述中,错误的是__________。A)一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B)解决二义性的最常用的方法是对成员名的限定法C)基类和派生类同时出现的同名函数,也存在二义性问题D)一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性
由于数据隐藏的需要,静态,数据成员通常被说明为( )A)私有的B)公有的C)保护的D)不可访问的52.假定X为一个类,则该类的拷贝构造函数[1]的声明语句为( )A)My Class(My Class x)B)My Class&(My Class x)C)My Class(My Class &x)D)My Class(My Class *x)53.Main()函数在执行之前不可以调用其构造函数的( )A)全局对象B)静态对象C)在main()函数体内说明的对象D)全局对象数组54.对于常成员函数,下列描述正确的是( )A)常成员函数只能修改常数据成员B)常成员函数只能修改一般数据成员C)常成员函数不能修改任何数据成员D)_成员函数只能通过常对象调用55.友元[2]的作用是( )A)提高程序是运行效率B)加强类的封装性C)实现数据的隐藏性D)增加成员函数的种类56.一个类的友元函数或友元类能够通过成员操作符访问该类的( )A)私有成员B)公有成员C)保护成员D)公有成员、保护成员和私有成员57.下面说法中正确的是( )A)当声明的内容不同时,声明同一个名字的两个类是允许的B)不完全生命的类也可以实例化C)声明同一个名字的两个类时,要求声明的内容也相同D)生命同一个名字的两个类是错误的58.下面对静态数据成员的描述中,正确的是( )A)静态数据成员是类的所有对象共享的数据B)类的没个对象都有自己的静态数据成员C)类的不同对象有不同的静态数据成员值D)静态数据成员不能通过类的对象调用59.下列关于对象数组的描述中,错误的是( )A)对象数组的下标是从0开始的B)对象数组的数组名是一个常量[3]指针C)对象数组的没个元素是同一个类的对象D)对象数组只能赋初值,而不能在定义后赋值60.对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( )class A{public:A(int x){n=x;}coid SetNum(int n1){n=n1;}privateint n;}int f()}a*ptr=new A(60);}A)A(60)B)SetNum(60)C)Ptr->SetNum(60)D)Ptr->n=6061.关于使用const关键字修饰的对象的说法正确的是( )A)不能用一般的成员函数来访问B)可以用一般的成员函数来访问C)可以访问const成员函数及colatile成员函数D)不能访问const成员函数62.下面是类MyClass的定义,对定义中各语句描述正确的是( )class MyClass {private: int X,y,Z;public;coid MyClass(int a){X=a;} ________________int f(int a,int b) ________________{X=a;Y=b;}Int f(int a,int b,int c=0) ________________{a;Y=b;Z=c;}Static coid g() {X=10;} ________________A)语句①是类MyClass的构造函数定义B)语句②和语句③实现类成员函数的重载C)语句④实现对类成员变量X的更新操作D)语句①②③和④都不正确63.友元访问类的对象的成员时使用( )A)类的成员名B)this指针指向成员名C)“类名::成员名”的形式D)“对象名.成员名”的形式64.下列程序输出的结果正确的是( )#i ncludecoid fun(){static int n=10;n++;cout *p”来访问类A的对象a的数据成员,则下面正确的是( )A)px是指向类数据成员的指针B)p是指向类数据成员的指针C)p是指向类的对象的指针D)无法确定指针类型69.关于类中数据成员的生存期的说法正确的是( )A)与对象的生存期无关B)比对象的生存期长C)比对象的生存期短D)有对象的生存期决定70.类example的析构函数[4]为( )A)example();B)example()C)~example();D)~example()71.以知AA是一个类,则执行语句Aaa;后( )A)自动调用无参构造函数B)自动调用有参构造函数C)自动调用拷贝构造函数D)产生一个对象a,但不调用任何函数72.对于类模板tanytemp,执行语句tanytempiobject(23,32);后 ( )A)产生的模板类为tanytempB)产生的模板类为iobjectC)产生的模板类为tanytempD)类模板实例化对象73.下列说法正确的是( )A)类定义中只能说明函数成员的函数头,不能定义函数体B)类中的函数成员只能可以在类体内定义,不可能在类体外定义C)类中的函数成员在类体外定义时必须要与类声明在同一文件中D)在类体外定义的函数成员不能操作该类的私有数据成员74.类的构造函数被自动调用执行的情况是在定义该类的( )A) 成员函数时B) 数据成员时C) 对象时D) 友元函数时75.说明友元函数使用关键字( )A) friendB) staticC) constD) colatile76.有关类的作用域[5].下了说法中不正确的是( )A) 说明类时所使用的一对花括号形成所谓的类作用域B) 类作用域不包含类汇总成员函数的作用域C) 类作用域中说明的标识符[6]只在类中可见D)在可能出现两义性的情况下,必须使用作用域限定符”::”78.允许访问类的所有对象的私有成员,公有成员和保护成员的是( )A) 友元函数B) 成员函数C) 内联[7]函数D) 重载函数79.形如X::X(X&)的构造函数称为( )A) 拷贝函数B)复制函数C)初始化函数D) 拷贝初始化构造函数80.以知example是已定义的类,则程序结束前,共存在( )个对象.#i ncludemain(){example x(5); example arr[2]={1,2};x=10;x.print();x=example(15);x.print();}A) 3B) 4C) 7D) 881.所有在函数中定义的变量,连同形式参数[8],都属于( )A) 全局变量[9]B) 局部变量[10]C) 静态变量D) 寄存器[11]变量82.在C++中,封状是借助于( )达到的.A) 结构B) 类C) 数组D) 函数83.下面不属于类的存取权限的是( )A) publicB) staticC) protectedD) pricate84.指向类X中类型为type的数据成员的指针的说明形式为( )A) type X::*pointerB) x::type*pointerC) type *X::pointerD) X::*tyoe pointer85.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的A) coid print() constB) const coid print()C) viod const print()D) coid print(const)86.关于new运算符的下列描述中,( )是错误的.A) 它可以用来动态创建对象和对象数组B) 使用它创建对象或对象数组,可以使用运算符DELETE删除C) 使用它创建对象时要调用构造函数D) 使用它调用对象数组时不E) 许指F) 定初始值87.下列关于构造函数的描述中,错误的是( )A) 构造函数可以设置默认参数B) 构造函数在说明类变量时自动执行C) 构造函数可以对静态数据成员进行初始化D) 够找函数可以重载88.对于类A,语句VOID(A::*P)(VOID);表明( )A) P是一个指B) 向类成员函数的指C) 针D) P是类A的一个成员E) P是类A的一个对象F) P是一个指G) 向类对象的指H) 针89.运算符delete删除一个动态对象时( )A) 首先为该动态对象调用构造函数,在释放其占用的内存B) 首先释放该动态对象占用的内存,在为其调用构造函数C) 首先为该动态对象调用析构函数,在释放其占用的内存D) 首先释放动态对象占用的内存,在为其调用析构函数第四、五章习题一选择题1. 在C++中的类有两种方法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过______________, 派生出新的类。A) 复用C) 继承D) 单继承[12]E) 多继承[13]5. 下面关于纯虚函数和抽象类[14]的描述中,__________是错误的。A) 纯虚函数是一种特殊的虚函数,它没有具体意义B) 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类C) 抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出D) 抽象类是指具有纯虚函数的类7. 继承具有__________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。A) 规律性B) 传递性C) 重复性E) 多样性10. 对虚函数的调用_________。A) 一定使用动态联编B) 一定使用静态联编C) 必须使用动态联编D) 不一定使用动态联编11. 若类A和类B的定义如下:class A{ int i,j; public:void get();________________};class B:A//默认为私有派生{int k; public;void make();________________};void B:: make(){ k=i*j;}则上述定义中,__________是非法的表达式。A)void get();B)int k;D)void make();D)k=i*j;6.下列描述中,__________是抽象类的特性。A)可以说明虚函数B)可以定义友元函数C)可以进行构造函数重载D)不能说明其对象7.在多继承中,公有私生和私有派生对于基类成员的派生类中的可访问性与单继承的规则__________。A)完全相同B)完全不同C)部分相同,部分不同D)以上都不对8.__________是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。A)纯虚函数B)虚析构函数C)虚构造函数D)静态成员函数9.下列对派生类的描述中,__________是错误的。A)一个派生类可以作另一个派生类的基类B)派生类至少有一个基类C)派生类的成员除了它自己的成员外,包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类保持不变10.实现运行时的多态性[15]要使用__________。A)构造函数B)析构函数C)重载函数D)虚函数11.派生类的对象对它的基类成员中_________是可以访问的。A)公有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)私有继承的公有成员12.关于函数的描述中,_________是正确的。A)派生类的虚函数与基类的虚函数具有不同的参数个数和类型B)基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数C)虚函数是一个成员函数D)虚函数是一个static类型的成员函数、13.对基类和派生类的关系描述中,__________是错误的。A)派生类是基类的具体化B)派生类是基类的子集C)派生类是基类定义的延续D)派生类是基类的组合14.关于动态联编的下列叙述中,__________是错误的。A)动态联编是以虚函数为基础的B)动态联编调用虚函数操作是指向对象的指针或引用C)动态联编是在运行时确定所调用的函数代码的D)动态联编是在编译时[16]确定操作函数的15.派生类的构造函数的成员初始化列表中,不能包含__________。A)基类的构造函数B)派生类中子对象的初始化C)基类的子对象初始化D)派生类中一般数据成员的初始化16.如果一个类至少有一个纯虚函数,那么就称该类为__________。A)抽象类B)派生类C)纯基类D)以上都不对17.设置虚基类的目的是__________。A)简化程序B)消除二义性C)提高运行效率D)减少目标代码[17]18.在下面程序中,编译时出现的错误是_________。class A ________1){ public; ________2) A() { func(); ________3) } virtual void func()=0; ________4)};A)(1)B)(2)C)(3)D)(4)19.关于多继承二义性的描述中,错误的是__________。A)一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性B)解决二义性的最常用的方法是对成员名的限定法C)基类和派生类同时出现的同名函数,也存在二义性问题D)一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性
题目解答
答案
file:// ① file:// ② file:// ③ file:// ④ file:// … file:// … file://( file://( file://( file://(