《C++选择题--填空题-判断题(共31页).docx》由会员分享,可在线阅读,更多相关《C++选择题--填空题-判断题(共31页).docx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上C+ 选择题 填空题 判断题1、选择题1、_只能访问静态成员变量。 A 静态函数 B 虚函数 C 构造函数 D 析构函数 2、下列的各类函数中,_不是类的成员函数。 A 构造函数 B 析构函数 C友元函数 D 拷贝构造函数 3、友元的作用_。 A 提高程序的运行效率 B 加强类的封装性 C 实现数据的隐藏性 D 增加成员函数的种类 4、类模板的使用实际上是将类模板实例化成一个具体的_。 A 类 B 对象 C 函数 D 模板类 5、下列函数中,_不能重载。 A 成员函数 B 非成员函数 C 析构函数 D 构造函数 6、_是一个在基类中说明的虚函数,它在该基类中没有定义,
2、但要求任何派生类都必须定义自己的版本。 A 虚析构函数 B虚构造函数 C纯虚函数 D 静态成员函数 7、_是istream的派生类,处理文件输入;_是iostream的派生类,可以同时处理文件的I/O。 A、 ifstream B、 ostream C、 fstream D、 ofstream 8、对于派生类的构造函数,在定义对象时构造函数的执行顺序为: 先执行_,再执行_,后执行_。 A 成员对象的构造函数 B 基类的构造函数 C 派生类本身的构造函数 9、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用_提供对全局变量的访问。 A 域运算符 B 类运算符 C 重载
3、D 引用 10、一个_允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。 A 函数模板 B 模板函数 C 类模板 D 模板类 11、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是_。 A 参数个数 B 参数的类型 C 函数名称 D函数的类型 12、如果一个类至少有一个纯虚函数,那么就称该类为_。 A 抽象类 B 虚基类 C 派生类 D 以上都不对 13、进行文件操作时需要包含_文件。 A iostream B fstream C stdio.h D stdliB、h 14、在C+中,打开一个文件,就是将这个文件与一
4、个_建立关联;关闭一个文件,就取消这种关联。 A 类 B 流 C 对象 D 结构 15、_提供了类对外部的接口,而_不允许外界访问,但允许派生类的成员访问。 A 公有成员 B 私有成员 C 私有成员函数 D 保护成员16、C+对C语言作了很多改进,下列描述中_使得C语言发生了质变,从面向过程变成了面向对象。 A、增加了一些新的运算符; B、允许函数重载,并允许设置缺省参数; C、规定函数说明必须用原型; D、引进了类和对象的概念; 17、在C+中,关于下列设置缺省参数值的描述中,_是正确的。 A、不允许设置缺省参数值; B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数; C、只能在函
5、数的定义中指定参数的缺省值; D、设置缺省参数值时,必须全部都设置; 18、_不是构造函数的特征。 A、构造函数的函数名与类名相同; B、构造函数可以重载; C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。 19、_是析构函数的特征。 A、析构函数可以有一个或多个参数; B、析构函数名与类名不同; C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数; 大家帮忙吖,考试要用的呢 ,要答案吖,谢谢哦 ,急!问题补充: 20、关于成员函数特征的下列描述中,_是错误的。 A、成员函数一定是内联函数; B、成员函数可以重载; C、成员函数可以设置缺省参数值; D、成员函数可
6、以是静态的; 21、下列静态数据成员的特性中,_是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的; D、引用静态数据成员时,要在其名称前加和作用域运算符; 22、关于new运算符的下列描述中,_是错误的。 A、它可以用来动态创建对象和对象数组; B、使用它创建的对象或对象数组可以使用运算符delete删除; C、使用它创建对象时要调用构造函数; D、使用它创建对象数组时必须指定初始值; 23、关于delete运算符的下列描述中,_是错误的。 A、它必须用于new返回的指针; B、使用它删除对象时要调用析
7、构函数; C、对一个指针可以使用多次该运算符; D、指针名前只有一对方括号符号,不管所删除数组的维数。最佳答案 1 A2 C3 C4 A5 C6 C7 AC8 ABC9 A10 C11 D12 A13 B14 B15 AD16 D17 B18 D19 A20 A21 C22 D23 CC+选择题求助(觉得必对的,请另外选择出来,作为参考)20分 标签: 回答:1 浏览:470 提问时间:2010-06-23 09:42一、单选题(共 20 道试题) V 1. 说明友元函数的关键字为() A. inline B. virtual C. friend D. define 2. 对A *p用new
8、A或(A *)malloc(sizeof (A)赋值,如下叙述正确的是() A. malloc分配内存后会调用构造函数初始化,但new函数不会。 B. new分配内存后会调用构造函数初始化,但malloc函数不会。 C. new和malloc分配内存后都会调用构造函数初始化。 D. new和malloc分配内存后都不会调用构造函数初始化。 3. 运算符重载是对已有的运算符赋予多重含义,因此() A. 可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义 B. 可以改变一个已有运算符的优先级和操作数个数 C. 只能重载C+中已经有的运算符,不能定义新运算符 D. C+中已经有的所有运
9、算符都可以重载 4. 有关类和对象的说法不正确的是() A. 对象是类的一个实例 B. 一个类只能有一个对象 C. 任何一个对象只能属于一个具体的类 D. 类与对象的关系和数据类型与变量的关系相似 5. 下面()不能由编译系统自动生成 A. 构造函数 B. 析构函数 C. 拷贝构造函数 D. 友元函数 6. 重载“”时,为保证其连用性,重载函数的返回类型应为() A. istream B. ostream C. istream & D. ostream & 7. 下列关于运算符重载的描述中,正确的是() A. 不能改变运算符的优先级 B. 能够改变操作数的数目 C. 能够重载内嵌类型的运算符的
10、预定含义 D. 通过重载运算符“()”能够改变运算符的结合性 8. C+源程序文件的扩展名为() A. .cpp B. .c C. .c+ D. .dll 9. 若有float f=6.8;int i= int(f); 则i的值为() A. 6 B. 7 C. 6.8 D. 不确定 10. 下列()是C+语言的有效标识符。 A. No.1 B. 12345 C. _No1 D. int 11. private访问属性限制对象的成员可以在()中访问。 A. 本类的成员函数 B. main函数 C. 父类的成员函数 D. 子类的成员函数 12. 含有()的类称为抽象类,不能直接用它实例化对象。 A
11、. 纯虚函数 B. 虚函数 C. 静态成员 D. 友元 13. 有类模板定义如下:template class Dream 下列类对象的定义中,正确的是() A. Dream a B. Dream a C. Dream a D. Dream a 14. 如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后+运算符的声明应该为() A. myclass operator+() B. myclass operator+( int ) C. myclass& operator+() D. myclass& operator+( int ) 15. 下列()不能有参数。 A.
12、构造函数 B. 析构函数 C. 友元函数 D. 运算 16. 下列关于抽象类的描述中,正确的是() A. 抽象类中最多只能有一个纯虚函数 B. 抽象类不能定义该类的指针 C. 抽象类不能定义该类的对象 D. 抽象类至少有一个虚函数 17. 以下()是不正确的强制类型转换方式。 A. (type表达式) B. (type)表达式 C. type(表达式) D. (type)(表达式) 18. 有如下函数模板定义:template T f(T x,T y) return x*x+y*y; 在下列对f的调用中,错误的是() A. f(3,5) B. f(3.0,5.5) C. f(3,5.5) D.
13、 f(3,5.5) 19. 空类就是没有()的类。 A. 类名 B. 任何成员 C. 数据成员 D. 成员函数 20. 下列关于类的描述中,错误的说法是() A. 类是一组对象的模板 B. 类是数据和操作的封装体 C. 类是对象的实例 D. 类是一种自定义的数据类型 共0条评论.学姐 1.C 2.B 3.C 4.B 5.A 6.C 7. 8.A 9.A 10.A 11.A 12.A 13.C 14. 15.B 16. 17. 18. 19.B 20.C 模拟试题一一、选择题1、C+对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。A、增加了一些新的运算符;B、
14、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念;2、下列描述中,()是错误的。A、内联函数主要解决程序的运行效率问题;B、内联函数的定义必须出现在内联函数第一次被调用之前;C、内联函数中可以包括各种语句;D、对内联函数不可以进行异常接口声明;3、在C+中,关于下列设置缺省参数值的描述中,()是正确的。A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;4、()不是构造函数的特征。A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构
15、造函数可以设置缺省参数;D、构造函数必须指定类型说明。5、()是析构函数的特征。A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内;D、一个类中只能定义一个析构函数;6、关于成员函数特征的下列描述中,()是错误的。A、成员函数一定是内联函数;B、成员函数可以重载;C、成员函数可以设置缺省参数值;D、成员函数可以是静态的;7、下列静态数据成员的特性中,()是错误的。A、说明静态数据成员时前边要加修饰符static;B、静态数据成员要在类体外进行初始化;C、静态数据成员不是所有对象所共用的;D、引用静态数据成员时,要在其名称前加和作用域运算符;8、友元的作用
16、是()。A、提高程序的运用效率;B、加强类的封装性;C、实现数据的隐藏性;D、增加成员函数的种类;9、关于new运算符的下列描述中,()是错误的。A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值;10、关于delete运算符的下列描述中,()是错误的。A、它必须用于new返回的指针;B、使用它删除对象时要调用析构函数;C、对一个指针可以使用多次该运算符;D、指针名前只有一对方括号符号,不管所删除数组的维数。11、const int *p说明不能修改()。A、p指针;B、
17、p指针指向的变量;C、p指针指向的数据类型;D、上述A、B、C三者;12、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的;A、void print() const;B、const void print();C、void const print();D、void print(const);13、派生类的对象对它的基类成员中()是可以访问的。A、公有继承的公有成员;B、公有继承的私有成员;C、公有继承的保护成员;D、私有继承的公有成员;14、设置虚基类的目的是()。A、简化程序;B、消除二义性;C、提高运行效率;D、减少目标代码;15、下列描述中,正确的是()
18、A、虚函数是一个static 类型的成员函数;B、虚函数是一个非成员函数;C、抽象类是指具有纯虚函数的类;D、抽象类可以说明其对象;二、判断下列描述的正确性,正确填T,错误填F。1、C+中标识符内的大小写字母是没有区别的。()2、C+是一种以编译方式实现的高级语言。()3、计算函数参数顺序引起的二义性是由不同的编译系统决定的。()4、返回值类型、参数个数和类型都相同的函数也可以重载。()5、使用关键字class定义的类中缺省的访问权限是私有(private)的。()6、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。()7、多继承情况下,派生类的构造函数的执行顺序
19、取决于成员初始化列表中的顺序。()8、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。()9、在私有继承中,基类中所有成员对派生类都是不可见的。()10、在保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。()11、构造函数可以声明为虚函数。()12、在析构函数中调用虚函数时,采用动态束定。()13、在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态束定。()14、公有继承可以实现子类型。()15、构造函数可以声明为纯虚函数。()三、分析下列程序的输出结果。1、#include class Test;void fun1(Test t);Test fun2
20、();class Testpublic: Test(int n=1) val=n; coutCon.endl; Test(const Test& t) val=t.val; coutCopy con.endl; Test& operator = (Test& t) val=t.val; coutAssignment.endl; return *this; private: int val;void main() Test t1(1); Test t2=t1; Test t3; t3=t1; fun1(t2); t3=fun2();void fun1(Test t)Test fun2() Tes
21、t t; return t;2、#include class Apublic: A() coutAs con.endl; A()coutAs des.endl; ;class Bpublic: B() coutBs con.endl; B()coutBs des.endl; ;class C:public A,public Bpublic: C():member(),B(),A() coutCs con.endl; C()coutCs des.endl; private: A member;void main() C obj;3、#include class Rpublic: R(int r1
22、,int r2) R1=r1;R2=r2; void print(); void print() const;private: int R1,R2;void R:print() coutR1:R2endl;void R:print() const coutR1;R2endl;void main() R a(5,4); a.print(); const R b(20,52); b.print();4、#include class Apublic:virtual void act1();void act2() act1(); void A:act1() coutA:act1() called. e
23、ndl; class B : public A public: void act1(); ; void B:act1() coutB:act1() called. endl; void main() B b; b.act2();模拟试题二一、填空题(每空1分,共20分)。1、对象是和的封装体。2、定义重载函数时,要从和上进行区分。3、类定义中,缺省的成员是成员。4、当一个成员函数被调用时,该成员函数的指向调用它的对象。5、设置虚基类的目的是,虚基类子对象的初始化由完成。6、对虚函数使用基类类型的指针或引用调用,系统使用联编;使用对象调用时,系统使用联编。7、一元运算符作为类成员函数重载时形参;
24、二元运算符作为重载时需声明其右操作数。8、带有的类称为抽象类,它只能作为来使用。9、请填写下列表格(填写直接派生类实例对基类成员的可见性)。直接派生类继承方式基类中成员类型publicprivateprotectedpublicprivate不可见不可见不可见protected二、单项选择题(每题2分,共20分)。1、下列描述中,()是不正确的。A、面向对象程序设计可重用性较好;B、对象之间通过消息进行信息传递;C、多态性体现了行为共享;D、面向对象方法的核心是继承;2、执行下列语句后的输出结果是()。int hot=100;int &rad=hot;hot+=100;coutradendl;
25、A、0;B、100;C、200;D、300;3、在C+中,关于下列函数参数的描述中,()是正确的。A、C+语言中,实参是按照自左至右的顺序求值的;B、若一个参数设置了默认值,则其右边的所有参数都具有默认值;C、函数参数的默认值不允许是表达式;D、设置参数默认值时,应该全部参数都设置;4、在()情况下适宜采用inline定义内联函数。A、函数体含有循环语句;B、函数体含有递归语句;C、函数代码小,频繁调用;D、函数代码多,不常调用;5、定义析构函数时,应该注意()。A、其函数名与类名完全相同;B、函数返回类型是void类型;C、无形参,也不可重载;D、函数体中必须有delete语句;6、下列关于
26、构造函数的描述中,()是正确的。A、构造函数可以设置缺省参数;B、构造函数可以被继承;C、构造函数可以对静态数据成员进行初始化;D、构造函数可以说明为虚函数;7、友元的作用是()。A、提高程序的运用效率;B、加强类的封装性;C、实现数据的隐藏性;D、增加成员函数的种类;8、 int * const p说明不能修改()。A、p指针;B、p指针指向的变量;C、p指针指向的数据类型; D、上述A、B、C三者;9、关于堆运算符的下列描述中,()是错误的。A、使用堆运算符可以动态建立或删除对象;B、new运算符创建对象时要调用构造函数;C、可以在使用new创建数组时,为每个数组元素指定初始值;D、del
27、ete运算符可以作用于空指针;10、关于继承的描述中,()是正确的。A、派生类是基类的子集;B、析构函数不能被继承;C、子类型关系是可逆的;D、派生类是基类的子类型;三、改错题(程序的每一行前加上了行号,可以通过说明行号来指出错误位置)(共20分)。1、指出下面程序中的错误并改正。Line1: class MyClassLine2: Line3: public:Line4: MyClass(int i) member=i;Line5: void SetMember(int m) member=m;Line6: int GetMember() const return member;Line7:
28、 private:Line8: int member;Line9: ;Line10: void main()Line11: Line12: MyClass obj1;Line13: MyClass obj2(3);Line14: obj1.member=5;Line15: MyClass.SetMember(10);Line16: 2、指出下面程序中的错误,并说明错误原因。Line1: class ALine2: Line3: public:Line4: A() func();Line5: virtual void func()=0;Line6: ;3、指出下面程序中的错误,说明错误原因并改正
29、。Line1: class TestLine2: Line3: public:Line4: Test(int i)Line5: Line6: ptr=new int(i);Line7: Line8: Test()Line9: Line10: delete ptr;Line11: Line12: private:Line13: int *ptr;Line14: ;Line15: void main()Line16: Line17: Test obj1(1);Line18: Test obj2(obj1);Line19: 四、简答题(共30分)。1、在下面给定的继承结构中,回答下列提出的问题。cl
30、ass Onepublic: int a; void b(); void c(float);class Twopublic: void b(); void c();private: int a;class Three : public One,public Twopublic: void b();void main() Three obj; obj.a=1; -S1 obj.b(); -S2 obj.c(10); -S3(1)、什么是多继承中的支配原则? (2)、主函数中对各条语句(S1, S2, S3)的访问是否具有二义性?为什么?2、写出下面程序的输出结果。#include int Div
31、(int x,int y) if(y=0) throw y; return x/y;void main() try cout6/4=Div(6,4)endl; cout5/0=Div(5,0)endl; cout9/3=Div(9,3)endl; catch(int) coutException of dividing zero.endl; coutIt is OK.endl;3、写出下面程序的输出结果。#include class Apublic: A(char i) coutAs cons.iendl; A() coutAs des.endl;class B : virtual publi
32、c Apublic: B(char i,char j) : A(i) coutBs cons.jendl; B() coutBs des.endl;private: char b;class C : virtual public Apublic: C(char i,char j) : A(i) coutCs cons.jendl; C() coutCs des.endl;class D : public B,public Cpublic: D(char i,char j,char k,char l,char m,char n) : C(k,l), B(i,j),A(i),aa(m) coutD
33、s cons.nendl; D() coutDs des.endl;private: A aa;void main() D obj(a,b,c,d,e,f);五、根据给定的程序执行结果,将下列程序补充完整。(10分)。#include class Basepublic: Base(int i) b=i; (1)protected: int b;class Derive1:public Basepublic: (2) void Print() coutDerive1s Print() called.Print();void main() (5) fun(d1); fun(d2);程序的执行结果如
34、下:Derive1s Print() called.Derive2s Print() called.模拟试题三一、填空题(每空1分,共20分)。1、所有的面向对象程序设计语言,都支持三个共同的本质特征、。2、为了解决程序中函数调用的效率问题,引入了,定义时需在函数前面加上说明;为了提高程序的运行效率,引入了,定义时需在函数前面加上说明。3、在类的定义当中,缺省的成员是成员。4、请填写下列表格(填写派生类中成员的类型)。派生类继承方式基类中成员类型publicprivateprotectedpublicprivate不可见不可见不可见protected5、利用成员函数对二元运算符进行重载时,其左
35、操作数为,右操作数为。6、设置虚基类的目的是,可通过标识虚基类。7、动态联编是在的支持下实现的,它通过来调用该函数操作。二、选择题(每题2分,共20分)。1、下列关于类型转换的描述中,()是错误的。A、在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型;B、逗号表达式的类型是最后一个表达式的类型;C、赋值表达式的类型是左值的类型;D、由低向高的类型转换是保值映射。2、()不是构造函数的特征。A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。3、在C+中,关于下列设置参数默认值的描述中,()是正确的。A、不允许
36、设置参数的默认值;B、设置参数默认值只能在定义函数时设置;C、设置参数默认值时,应该是先设置右边的,再设置左边的;D、设置参数默认值时,应该全部参数都设置。4、关于new运算符的下列描述中,()是错误的。A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值。5、重载函数在调用时选择的依据中,()是错误的。A、参数个数;B、参数的类型;C、函数名字;D、函数的类型。6、下列描述中,()是抽象类的特性。A、可以说明虚函数;B、可以进行构造函数重载;C、可以定义友元函数;D、不能
37、说明其对象。7、()是析构函数的特征。A、一个类中只能定义一个析构函数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内;D、析构函数可以有一个或多个参数;8、关于delete运算符的下列描述中,()是错误的。A、它必须用于new返回的指针;B、它也适用于空指针;C、对一个指针可以使用多次该运算符;D、指针名前只有一对方括号符,不管所删除数组的维数。9、const int *p说明不能修改()。A、p指针;B、p指针指向的变量;C、p指针指向的数据类型;D、上述A、B、C三者。10、关于子类型的描述中,()是错误的。A、子类型就是指派生类是基类的子类型;B、一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型;C、在公有继承下,派生类是基类的子类型;D、子类型关系是不可逆的。三、改错题(共15分)。1、找出下面程序中的错误,并说明原因。class Xpublic: int readme() const return m; void writeme(int i) m=i;private: int m;void f(X& x1
限制150内